我有一个只有一个属性的简单类,这个类实现了接口INotifyPropertyChange。
public class SomeClass : INotifyPropertyChanged
{
private string _iD;
public event PropertyChangedEventHandler PropertyChanged;
private void NotifyPropertyChanged(string info)
{
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs(info));
}
}
public string ID
{
get { return _iD; }
set
{
if (String.IsNullOrEmpty(value))
throw new ArgumentNullException("ID can not be null or empty");
if (this.ID != value)
{
_iD = value;
NotifyPropertyChanged(ID);
}
}
}
}我正在尝试将OneWay绑定到标签。我在后面的代码中设置了标签的DataContext。
private SomeClass _myObject;
public MainWindow()
{
InitializeComponent();
_myObject = new SomeClass() { ID = "SomeID" };
lb.DataContext = _myObject;
}在XAML中,我将属性ID绑定到标签的Content。
<Label Name="lb" Content="{Binding Path = ID, Mode=OneWay}" Grid.Row="0"></Label>
<TextBox Name="tb" Grid.Row="1"></TextBox>
<Button Name="btn" Content="Change" Height="20" Width="100" Grid.Row="2" Click="btn_Click"></Button>然后,我在按钮单击事件中更改了属性ID的值,但label的内容没有更改。
private void btn_Click(object sender, RoutedEventArgs e)
{
_myObject.ID = tb.Text;
Title = _myObject.ID;
}为什么这不起作用?
发布于 2010-10-31 19:04:01
NotifyPropertyChanged应采用已更改属性的名称,而不是该属性的值。因此,将NotifyPropertyChanged(ID)更改为NotifyPropertyChanged("ID")。
https://stackoverflow.com/questions/4062829
复制相似问题