在C#中,可以使用INotifyPropertyChanged
接口来实现属性变更通知。这个接口要求实现一个名为PropertyChanged
的事件,当属性值发生变化时,会触发此事件。以下是一个简单的示例:
首先,创建一个名为INotifyPropertyChanged
的接口:
public interface INotifyPropertyChanged { event PropertyChangedEventHandler PropertyChanged; }
然后,创建一个基类BaseViewModel
,实现INotifyPropertyChanged
接口:
public abstract class BaseViewModel : INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
protected void OnPropertyChanged([CallerMemberName] string propertyName = null)
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
}
接下来,创建一个包含属性的视图模型类,继承自BaseViewModel
:
public class MyViewModel : BaseViewModel { private string _myProperty; public string MyProperty { get { return _myProperty; } set { if (_myProperty != value) { _myProperty = value; OnPropertyChanged(); } } } }
在这个例子中,当MyProperty
的值发生变化时,会触发PropertyChanged
事件。你可以在XAML中绑定这个属性到视图,当属性值发生变化时,视图将自动更新。
例如,在XAML中创建一个TextBox
,并将其绑定到MyProperty
:
在代码中,将MyViewModel
实例设置为窗口的数据上下文:
public partial class MainWindow : Window { public MainWindow() { InitializeComponent(); DataContext = new MyViewModel(); } }
现在,当你在TextBox
中更改文本时,MyProperty
的值会发生变化,并触发PropertyChanged
事件,从而更新视图。