MVVM(Model-View-ViewModel)是一種軟件架構模式,用于將應用程序的用戶界面邏輯與業(yè)務邏輯分離。在WPF應用程序中使用MVVM模式可以使代碼更易于維護和測試。下面是一個簡單的C# MVVM模式在WPF中的應用示例:
Model(數(shù)據(jù)模型):
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類作為數(shù)據(jù)模型,一個MainViewModel類作為視圖模型,用于管理Person對象的數(shù)據(jù),以及一個MainWindow作為視圖,使用DataBinding將視圖模型和視圖進行綁定。
當運行這個示例時,窗口中會顯示一個包含姓名和年齡輸入框的界面,用戶輸入的數(shù)據(jù)會被綁定到視圖模型中的Person對象上。這樣就實現(xiàn)了視圖與數(shù)據(jù)模型的分禨,使代碼更易于維護和測試。