

新闻资讯
技术学院INotifyPropertyChanged 是 .NET MAUI MVVM 数据绑定的必需接口,用于通知 UI 属性变更;需手动实现或通过 CommunityToolkit.Mvvm 的 ObservableObject 简化;绑定时还需设置 BindingContext 并在 XAML 中正确引用。
在 .NET MAUI 中,INotifyPropertyChanged 是 MVVM 数据绑定的基石——它让 UI 能“感知” ViewModel 属性的变化并自动刷新。不用它,绑定就只是单向静态值,改了属性,界面上啥也不会变。
MAUI 的 XAML 绑定(比如 {Binding Name})默认只监听实现了 INotifyPropertyChanged 的对象。如果 ViewModel 没触发 PropertyChanged 事件,哪怕你在代码里改了 Name = "李四",TextBlock 依然显示旧值。
这个接口定义在 System.ComponentModel 命名空间,核心就一件事:当属性值变了,主动“喊一嗓子”通知界面更新。
新建一个 ViewModel 类,手动实现接口:
PropertyChanged 事件OnPropertyChanged 方法,用 [CallerMemberName] 自动获取属性名,避免硬编码字符串出错set 块里调用它(且仅在值真变了时才触发)示例:
public class PersonViewModel : INotifyPropertyChanged手写样板代码容易漏、重复多。官方推荐的 CommunityToolkit.Mvvm 提供了 ObservableObject 基类,一行 SetProperty 就搞定通知逻辑:
CommunityToolkit.Mvvm
ObservableObject
SetProperty(ref _field, value) 替代手动判断和触发示例:
public class MainViewModel : ObservableObject
get => _message;光有 ViewModel 不够,还得让页面“认得”它:
MainPage.xaml.cs 构造函数中设置:BindingContext = new MainViewModel();
Mode=TwoWay:{Binding Message, Mode=TwoWay}
注意:集合类(如 ObservableCollection)本身已实现变更通知,但集合内部元素变化仍需元素自身支持 INotifyPropertyChanged。
基本上就这些。不复杂,但容易忽略 OnPropertyChanged 调用或绑定上下文设置——这两处出错,绑定就静默失效。