You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

多层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代码完全不需要变动:

  1. 将MainViewModel的类声明改为partial,并添加[ObservableObject]特性(这是Source Generators识别的核心标记)
  2. 移除手动实现的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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 01:27:44