我们有一个派生自 DependencyObject 的对象,并实现了一些 DependencyProperties。
基本上是这样的:
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);
}
}
}
这有效,属性已设置,可以绑定等。当我使用 TwoWay 绑定从 WPF 绑定到属性时,问题就出现了。TwoWay 部分从未真正发生过,WPF 从未调用此属性的集合。我已经像这样设置了我的绑定:
<TextBox Text="{Binding Path=Name, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" />
在这种情况下,在文本框中键入应该会立即更新 Name 属性,但事实并非如此。如果我将 Name 属性更改为常规 POCO 属性,它会起作用(尽管 TwoWay 的另一端显然不会,除非我实现 INotifyPropertyChanged)。
我在这里做错了什么?这应该是一件非常简单的事情,但它让我头疼不已。