我已经阅读了几篇关于此内容的文章,并且在我的属性发生变化时似乎无法更新我的标签。 PropertyChanged事件正在触发,并且属性正在更新为新文本,但标签未更新。 谢谢你的帮助!
XAML
<Grid.Resources>
<c:UserInformation x:Key="myTaskData"/>
</Grid.Resources>
<Label Name="lblTaskNameTitle" Content="{Binding Path=propTaskName, UpdateSourceTrigger=PropertyChanged}"/>
窗口
UserInformation t = new UserInformation();
t.propTaskName = "Updated Task Name";
this.DataContext = t.propTaskName;
背后的代码
class UserInformation : INotifyPropertyChanged
{
private string strTaskName = "Task Name: ";
public string propTaskName
{
get { return this.strTaskName; }
set
{
this.strTaskName = value;
NotifyPropertyChanged("propTaskName"); //Call the method to set off the PropertyChanged event.
}
}
//INotifyPropertyChanged stuff
public event PropertyChangedEventHandler PropertyChanged;
private void NotifyPropertyChanged(string propertyName)
{
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
}
已更新以反映评论建议。
答案 0 :(得分:2)
Xaml应该是:
<Label Name="lblTaskNameTitle" Content="{Binding Path=propTaskName, UpdateSourceTrigger=PropertyChanged}"/>
UserInformation t = new UserInformation();
t.propTaskName = "Updated Task Name";
this.DataContext = t;
答案 1 :(得分:1)
绑定查看DataContext,而不是后面的代码。你可以通过将DataContext = this添加到你的代码中来使它们成为同样的东西,尽管你想要使用一个单独的类。