赞
踩
MVVM模式由三个主要部分组成:
Model通常是数据实体类和数据访问层,可以从数据库或服务中获取数据。下面是一个简单的Model示例:
- public class Person
- {
- public string Name { get; set; }
- public int Age { get; set; }
- }
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));
- }
- }

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>
要使绑定工作,需要在窗口的代码后面设置DataContext:
- public partial class MainWindow : Window
- {
- public MainWindow()
- {
- InitializeComponent();
- DataContext = new PersonViewModel();
- }
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。