MVVM(Model-View-ViewModel)是一种软件架构模式,用于将应用程序的用户界面逻辑与业务逻辑分离。在WPF应用程序中使用MVVM模式可以使代码更易于维护和测试。下面是一个简单的C# MVVM模式在WPF中的应用示例:
Model(数据模型):
public class Person
{
public string Name { get; set; }
public int Age { get; set; }
}
ViewModel(视图模型):
public class MainViewModel : INotifyPropertyChanged
{
private Person _person;
public Person Person
{
get { return _person; }
set
{
_person = value;
OnPropertyChanged(nameof(Person));
}
}
public MainViewModel()
{
Person = new Person { Name = "John Doe", Age = 30 };
}
public event PropertyChangedEventHandler PropertyChanged;
protected void OnPropertyChanged(string propertyName)
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
}
View(视图):
<Window x:Class="MVVMExample.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:MVVMExample"
Title="MVVM Example" Height="200" Width="300">
<Window.DataContext>
<local:MainViewModel/>
</Window.DataContext>
<Grid>
<StackPanel>
<TextBlock Text="Name:"/>
<TextBox Text="{Binding Person.Name, Mode=TwoWay}"/>
<TextBlock Text="Age:"/>
<TextBox Text="{Binding Person.Age, Mode=TwoWay}"/>
</StackPanel>
</Grid>
</Window>
在这个示例中,我们定义了一个简单的Person类作为数据模型,一个MainViewModel类作为视图模型,用于管理Person对象的数据,以及一个MainWindow作为视图,使用DataBinding将视图模型和视图进行绑定。
当运行这个示例时,窗口中会显示一个包含姓名和年龄输入框的界面,用户输入的数据会被绑定到视图模型中的Person对象上。这样就实现了视图与数据模型的分禨,使代码更易于维护和测试。