问题出现的原因是使用了静态绑定,而不是动态绑定。以下是一些解决方案:
1.使用INotifyPropertyChanged
使用INotifyPropertyChanged接口可以显式地通知UI,来更新标签的内容。例如:
public class Person : INotifyPropertyChanged { private string name;
public string Name
{
get { return name; }
set
{
name = value;
OnPropertyChanged("Name");
}
}
public event PropertyChangedEventHandler PropertyChanged;
protected void OnPropertyChanged(string propertyName)
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
}
在XAML中绑定Person对象的Name属性,然后在修改Name属性时调用OnPropertyChanged方法。
2.使用动态绑定
如果使用动态绑定,在绑定源的属性发生更改时,系统会自动更新UI。例如:
Label1.DataBindings.Add(new Binding("Text", myObject, "MyProperty", true, DataSourceUpdateMode.OnPropertyChanged));
在这个示例中,当myObject的MyProperty属性更改时,Label1的文本将自动更新。
此外,使用ViewModel也是一种常见的解决方案,一般来说,绑定到ViewModel是更加灵活的方法,而且可以在ViewModel中处理所有的数据并确保UI的同步。
下一篇:绑定不能包含赋值语句