CommunityToolkit.Mvvm 库

CommunityToolkit.Mvvm(原名 Microsoft.Toolkit.Mvvm)是一个由 .NET 社区维护的现代化、轻量级 MVVM 框架,专为 WPF、UWP、Xamarin 和 .NET MAUI 等 XAML 平台设计。

一、核心特点

  1. 轻量高效:仅包含必要的 MVVM 组件,无额外依赖

  2. 平台中立:适用于所有 XAML 平台(WPF/UWP/Xamarin/MAUI)

  3. 源码生成:利用 Roslyn 编译器生成高性能代码

  4. 现代化 API:使用 C# 最新特性(如记录类型、模式匹配等)

  5. 官方支持:微软 .NET 团队维护,质量有保障

二、主要组件

1. ObservableObject (替代 INotifyPropertyChanged)

using CommunityToolkit.Mvvm.ComponentModel;

public partial class UserViewModel : ObservableObject
{
    [ObservableProperty]
    private string _name; // 自动生成 public string Name { get; set; }
    
    [ObservableProperty]
    [NotifyPropertyChangedFor(nameof(FullName))] // 当Name变化时通知FullName
    private string _lastName;
    
    public string FullName => $"{Name} {LastName}";
}

2.

### 使用 CommunityToolkit.Mvvm 实现 WPF 中的绑定和命令通知 CommunityToolkit.Mvvm 是 Microsoft 提供的一个现代、轻量级且模块化的 MVVM 框架,它简化了 WPF 应用程序中数据绑定和命令处理的实现方式。通过该可以快速构建符合 MVVM 模式的应用程序,提升开发效率并减少样板代码。 以下是一个完整的示例,展示如何使用 CommunityToolkit.Mvvm 实现属性绑定和命令通知。 --- ### 安装 CommunityToolkit.Mvvm 在项目中使用 NuGet 安装 CommunityToolkit.Mvvm: ```bash dotnet add package CommunityToolkit.Mvvm ``` --- ### ViewModel 实现 使用 `ObservableObject` 和 `ICommand` 接口来实现 ViewModel 层,其中 `RelayCommand` 用于封装命令逻辑,`ObservableProperty` 特性用于自动生成属性更改通知代码。 ```csharp using CommunityToolkit.Mvvm.ComponentModel; using CommunityToolkit.Mvvm.Input; public partial class MainViewModel : ObservableObject { [ObservableProperty] private string message = "初始消息"; public MainViewModel() { UpdateMessageCommand = new RelayCommand(UpdateMessage); } public ICommand UpdateMessageCommand { get; } private void UpdateMessage(object parameter) { Message = "消息已更新!"; } } ``` --- ### XAML 中的绑定 在 XAML 中绑定 `TextBlock.Text` 和 `Button.Command`,使得数据和命令能够与 ViewModel 进行交互。 ```xml <Window x:Class="WpfApp.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:local="clr-namespace:WpfApp" Title="CommunityToolkit.Mvvm 示例" Height="200" Width="400"> <Window.DataContext> <local:MainViewModel /> </Window.DataContext> <Grid> <StackPanel VerticalAlignment="Center" HorizontalAlignment="Center"> <TextBlock Text="{Binding Message}" FontSize="16" Margin="10"/> <Button Content="更新消息" Command="{Binding UpdateMessageCommand}" Width="120" Height="30"/> </StackPanel> </Grid> </Window> ``` --- ### 实现说明 - `ObservableObject` 是 `CommunityToolkit.Mvvm` 提供的基类,用于支持 `INotifyPropertyChanged` 接口[^1]。 - `ObservableProperty` 是一个源生成器特性,用于自动为属性生成 `OnPropertyChanged` 调用代码[^2]。 - `RelayCommand` 是 `CommunityToolkit.Mvvm.Input` 命名空间中的类,用于实现 `ICommand` 接口,支持绑定到 UI 元素[^3]。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值