2015-04-22 118 views
0

我已經閱讀了幾篇關於這方面的文章,並且看起來不太可能讓我的標籤在我的屬性發生更改時進行更新。 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

回答

0

的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

0

綁定看看DataContext的,而不是後面的代碼。您可以通過將DataContext = this添加到您的代碼中來使它們成爲相同的東西,儘管您希望使用單獨的類。