阅读量:5
1. MVVM模式概述
MVVM模式由三个主要部分组成:
- Model(模型):包含应用程序的业务逻辑和数据。通常是数据对象和数据访问层。
- View(视图):用户界面部分,展示数据并与用户进行交互。通常是XAML文件。
- ViewModel(视图模型):视图与模型之间的桥梁。它从Model中获取数据并准备好让View使用,同时处理用户的交互。
2. MVVM模式在WPF中的实现
2.1 Model Model: Person.cs
Model通常是数据实体类和数据访问层,可以从数据库或服务中获取数据。下面是一个简单的Model示例:
public class Person { public string Name { get; set; } public int Age { get; set; } }
2.2 ViewModel ViewModel: PersonViewModel.cs
ViewModel负责从Model获取数据并准备好供View使用。ViewModel通常实现INotifyPropertyChanged
接口,以便通知View属性值的变化。
using System.ComponentModel; public class PersonViewModel : INotifyPropertyChanged { private Person _person; public PersonViewModel() { _person = new Person { Name = "John Doe", Age = 30 }; } public string Name { get { return _person.Name; } set { if (_person.Name != value) { _person.Name = value; OnPropertyChanged("Name"); } } } public int Age { get { return _person.Age; } set { if (_person.Age != value) { _person.Age = value; OnPropertyChanged("Age"); } } } public event PropertyChangedEventHandler PropertyChanged; protected void OnPropertyChanged(string propertyName) { PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName)); } }
2.3 View View: MainWindow.xaml
View是用户界面部分,使用XAML定义界面布局和绑定。下面是一个简单的View示例:
<Window x:Class="MVVMExample.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="MainWindow" Height="200" Width="400"> <Grid> <StackPanel> <TextBox Text="{Binding Name, UpdateSourceTrigger=PropertyChanged}" /> <TextBox Text="{Binding Age, UpdateSourceTrigger=PropertyChanged}" /> <TextBlock Text="{Binding Name}" /> <TextBlock Text="{Binding Age}" /> </StackPanel> </Grid> </Window>
2.4 Code-Behind: MainWindow.xaml.cs
要使绑定工作,需要在窗口的代码后面设置DataContext:
public partial class MainWindow : Window { public MainWindow() { InitializeComponent(); DataContext = new PersonViewModel(); } }