wpf mvvm demo
时间: 2023-07-23 16:14:10 浏览: 111
以下是一个简单的WPF MVVM应用程序示例:
首先,创建一个Model类,如下所示:
```csharp
public class Person
{
public string Name { get; set; }
public int Age { get; set; }
}
```
接下来,创建一个ViewModel类,如下所示:
```csharp
public class PersonViewModel : INotifyPropertyChanged
{
private Person person;
public PersonViewModel()
{
person = new Person();
}
public string Name
{
get { return person.Name; }
set
{
person.Name = value;
OnPropertyChanged("Name");
}
}
public int Age
{
get { return person.Age; }
set
{
person.Age = value;
OnPropertyChanged("Age");
}
}
public event PropertyChangedEventHandler PropertyChanged;
protected void OnPropertyChanged(string propertyName)
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
}
```
在ViewModel中,我们创建了一个Person对象,并暴露了其Name和Age属性,这些属性都实现了INotifyPropertyChanged接口,用于通知UI层的绑定属性已经改变。
最后,创建一个View类,如下所示:
```xml
<Window x:Class="WpfMVVMDemo.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:WpfMVVMDemo"
Title="MainWindow" Height="150" Width="250">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<Label Grid.Row="0" Grid.Column="0" Content="Name:"/>
<TextBox Grid.Row="0" Grid.Column="1" Text="{Binding Name}"/>
<Label Grid.Row="1" Grid.Column="0" Content="Age:"/>
<TextBox Grid.Row="1" Grid.Column="1" Text="{Binding Age}"/>
<Button Grid.Row="2" Grid.Column="1" Content="Submit"/>
</Grid>
</Window>
```
在View中,我们使用了绑定来将UI元素与ViewModel中的属性关联起来,这样当ViewModel中的属性发生变化时,UI层也会自动更新。
最后,我们需要在View的代码中将ViewModel与View关联起来,如下所示:
```csharp
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
DataContext = new PersonViewModel();
}
}
```
这样,我们就完成了一个简单的WPF MVVM应用程序的示例。
阅读全文