WPF绑定标签内容到属性

问题描述:

我已经阅读了几篇关于这方面的文章,并且看起来不太可能让我的标签在我的属性发生更改时进行更新。 PropertyChanged事件触发,并且属性正在更新为新文本,但标签未更新。 感谢您的帮助!WPF绑定标签内容到属性

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

你在哪儿设置'myTaskData'?这似乎应该是你的'DataContext'而不是任务名称。 –

+0

myTaskData在Grid.Resources部分中设置。 – Litmas

的XAML应该是:

<Label Name="lblTaskNameTitle" Content="{Binding Path=propTaskName, UpdateSourceTrigger=PropertyChanged}"/> 

UserInformation t = new UserInformation();    
t.propTaskName = "Updated Task Name"; 
this.DataContext = t; 
+0

我已经更新了xaml以反映这一点,并且标签仍未更新?其他建议? – Litmas

绑定看看DataContext的,而不是后面的代码。您可以通过将DataContext = this添加到您的代码中来使它们成为相同的东西,尽管您希望使用单独的类。