WPF将标签内容绑定到属性

时间:2015-04-22 15:24:21

标签: c# wpf

我已经阅读了几篇关于此内容的文章,并且在我的属性发生变化时似乎无法更新我的标签。 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));  
            }
        }

已更新以反映评论建议。

2 个答案:

答案 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添加到你的代码中来使它们成为同样的东西,尽管你想要使用一个单独的类。