多层WPF应用中如何将ViewModel改为partial类以使用MVVM源生成器
将WPF ViewModel改为partial类以支持Microsoft Community Toolkit Source Generators
问题背景
使用Microsoft Community Toolkit开发多层WPF应用时,要用到工具包的Source Generators特性,但该特性要求ViewModel必须是partial类。现有View和ViewModel代码可正常运行,需要将ViewModel改造为partial类并保留原有功能。
解决方案
只需要对ViewModel做两处修改,View代码完全不需要变动:
- 将
MainViewModel的类声明改为partial,并添加[ObservableObject]特性(这是Source Generators识别的核心标记) - 移除手动实现的
SampleText属性,改用[ObservableProperty]特性标记私有字段,让Source Generator自动生成对应的公共属性及INotifyPropertyChanged逻辑
修改后的ViewModel代码如下:
using CommunityToolkit.Mvvm.ComponentModel; namespace PlantWorks.Biz.FirstPart; [ObservableObject] public partial class MainViewModel : ObservableObject { [ObservableProperty] private string sampleText = "Hello World"; }
关键说明
partial关键字允许Source Generators在编译时自动生成该类的另一部分代码,包含属性的get/set方法以及OnPropertyChanged调用逻辑,和你手动实现的功能完全一致[ObservableObject]特性标记该类启用MVVM工具包的源生成能力[ObservableProperty]特性会自动生成名为SampleText的公共属性(首字母自动大写),内部逻辑和你之前手动写的判重+通知逻辑完全匹配- 原View中的
{Binding SampleText}绑定无需修改,因为生成的公共属性名和之前手动实现的完全相同
内容的提问来源于stack exchange,提问作者Buck Hicks
相关产品推荐
相关产品推荐

