我们有一个从DependencyObject派生并实现了一些DependencyProperties的对象。
基本上是像这样的:
在这种情况下,输入文本框中的内容应立即更新名称属性,但实际上并没有。如果我将名称属性更改为常规POCO属性,则可以正常工作(尽管双向绑定的另一侧除非我实现INotifyPropertyChanged,否则不起作用)。
我在这里做错了什么?这应该是一件非常简单的事情,但它给我带来了无尽的头痛。
基本上是像这样的:
class Context : DependencyObject {
public static readonly DependencyProperty NameProperty =
DependencyProperty.Register ("Name", typeof (string), typeof (Context), new PropertyMetadata (""));
public string Name {
get {
return (string)this.GetValue (NameProperty);
}
set {
this.SetValue (NameProperty, value);
}
}
}
这段代码本身是没有问题的,属性可以设置和绑定等。但是当我尝试从WPF进行双向绑定时,问题就出现了。双向绑定并没有真正地发生,WPF也没有调用此属性的set方法。我的绑定方式如下:
<TextBox Text="{Binding Path=Name, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" />
在这种情况下,输入文本框中的内容应立即更新名称属性,但实际上并没有。如果我将名称属性更改为常规POCO属性,则可以正常工作(尽管双向绑定的另一侧除非我实现INotifyPropertyChanged,否则不起作用)。
我在这里做错了什么?这应该是一件非常简单的事情,但它给我带来了无尽的头痛。