这可能是一个基本问题,因为我是WPF新手。
我有一个包含TextBox和Button的UserControl(此问题简化了代码):
<UserControl x:Name="this">
<TextBox Text="{Binding ElementName=this, Path=MyProperty.Value}"/>
<Button x:Name="MyButton" Click="Button_Click"/>
</UserControl>
在后面的代码中,我将“MyProperty”注册为DependencyProperty:
public static readonly DependencyProperty MyPropertyProperty = DependencyProperty.Register("MyProperty", typeof(MyProperty), typeof(MyPropertyNumeric), new UIPropertyMetadata(null));
“MyProperty”是我定义的类,它实现了INotifyPropertyChanged。 “MyProperty.Value”属于object类型。
单击该按钮时,我在代码隐藏中更改了MyProperty.Value。我想让TextBox自动显示新值。我希望上面的内容能够正常工作,因为我已经实现了INotifyPropertyChanged - 但事实并非如此......任何人都知道如何做到这一点?
答案 0 :(得分:1)
在更新时,您是否使用属性名称调用OnPropertyChanged事件?
例如,
public class MyProperty : INotifyPropertyChanged {
private string _value;
public string Value { get { return _value; } set { _value = value; OnPropertyChanged("Value"); } }
public event PropertyChangedEventHandler PropertyChanged;
protected void OnPropertyChanged(string name) {
PropertyChangedEventHandler handler = PropertyChanged;
if(handler != null) {
handler(this, new PropertyChangedEventArgs(name));
}
}
}
确保使用您要更新的属性的名称触发PropertyChanged事件非常重要。
答案 1 :(得分:0)
尝试添加到绑定模式=“OneWay”,我不确定什么是默认