.NET 实现mvvm框架
时间: 2024-12-30 13:14:37 浏览: 10
### .NET 中实现 MVVM 框架
#### 使用社区工具包中的 MVVM 工具包创建应用
.NET 社区工具包提供了主要组件之一——MVVM 工具包,这是一个现代、快速、平台无关和模块化的 MVVM 库[^1]。此库可以简化开发过程并提高代码质量。
#### 定义模型 (Model)
在任何基于 MVVM 的应用程序中,`Model` 层表示数据结构以及与之关联的业务逻辑:
```csharp
public class Person
{
public string FirstName { get; set; }
public string LastName { get; set; }
public void Save()
{
// 保存到数据库或其他持久化存储的操作...
}
}
```
#### 构建视图模型 (ViewModel)
`ViewModel` 起到了连接 `View` 和 `Model` 的作用,并通常实现了 `INotifyPropertyChanged` 接口以便支持双向数据绑定:
```csharp
using CommunityToolkit.Mvvm.ComponentModel;
using System.Windows.Input;
public partial class MainViewModel : ObservableObject
{
private readonly Person _person = new();
[ObservableProperty]
private string firstName;
[ObservableProperty]
private string lastName;
public ICommand SaveCommand => new RelayCommand(Save);
private void Save()
{
_person.FirstName = FirstName;
_person.LastName = LastName;
_person.Save();
}
}
```
这里使用了来自 `.NET 社区工具包` 提供的帮助特性 `[ObservableProperty]` 来自动生成属性更改通知方法。
#### 设计视图 (View)
对于视图部分,在 XAML 文件里声明 UI 控件并与相应的 ViewModel 进行绑定:
```xml
<Window x:Class="MyApp.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
Title="MainWindow">
<!-- 设置 DataContext -->
<Window.DataContext>
<local:MainViewModel />
</Window.DataContext>
<StackPanel Margin="10">
<TextBox Text="{Binding FirstName, Mode=TwoWay}" Width="200"/>
<TextBox Text="{Binding LastName, Mode=TwoWay}" Width="200"/>
<Button Command="{Binding SaveCommand}" Content="Save" HorizontalAlignment="Left" Width="75"/>
</StackPanel>
</Window>
```
通过这种方式,当用户输入文本框内容时会自动更新对应的 ViewModel 属性;点击按钮则触发命令执行特定操作。
阅读全文