0

我试图在 Loaded 事件中调用 GetBindingExpression 方法,但它总是返回null.

这是预期的行为,还是我做错了什么?如果它是预期的,在什么事件之后绑定表达式变得可用?

我只是创建自定义控件

public partial class LookUp : ComboBox

public static readonly DependencyProperty LookUpItemsSourceProperty =
                           DependencyProperty.Register("LookUpItemsSource"
                           , typeof(IEnumerable)
                           , typeof(LookUp)
                           , new PropertyMetadata(OnItemsSourcePropertyChanged));


public IEnumerable LookUpItemsSource
        {
            get
            {
                return this.GetValue(LookUpItemsSourceProperty) as IEnumerable;
            }
            set
            {
                this.SetValue(LookUpItemsSourceProperty, value);
            }
        }

并在 xaml 中使用此控件

<Controls:LookUp Name="cb1"  LookUpItemsSource="{x:Static Helper:DataManager.CycleLookUpData}"

现在我想在控件初始化该方法返回 null 时获取绑定表达式:

cb1.GetBindingExpression(LookUp.LookUpItemsSourceProperty)
4

2 回答 2

1

x:static 将设置键的值,它不是绑定表达式。你将不得不使用,

{Binding CycleLookUpData, source={x:static Helper:DataManager}}
于 2012-01-28T07:53:30.003 回答
1

如果您不在{Binding ...XAML 中使用,则不能使用GetBindingExpression()方法。在您的情况下,您设置值而不是绑定。你需要cb1.GetValue(LookUp.LookUpItemsSourceProperty)改用。

于 2016-01-04T12:40:55.283 回答