MVVM的 C#案例
时间: 2024-08-14 21:00:32 浏览: 34
MVVM(Model-View-ViewModel)设计模式在C#中常用于WPF (Windows Presentation Foundation) 应用程序开发中,它将应用程序的逻辑、视图以及它们之间的交互分离。以下是一个简单的C# MVVM案例:
1. **创建模型(Model)**: 这通常代表业务逻辑和数据层。例如,我们有一个`User`类,表示用户信息。
```csharp
public class User
{
public string Name { get; set; }
public int Age { get; set; }
}
```
2. **定义视图模型(ViewModel)**: 视图模型封装了模型并处理与UI相关的操作。这里有一个`UserViewModel`,包含了用户数据并添加了观察者模式来响应属性变化。
```csharp
using System.ComponentModel;
public class UserViewModel : INotifyPropertyChanged
{
private User _user;
public User User
{
get => _user;
set
{
_user = value;
OnPropertyChanged("User");
}
}
public event PropertyChangedEventHandler PropertyChanged;
protected virtual void OnPropertyChanged(string propertyName)
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
}
```
3. **绑定视图(View)**: 在XAML文件中,视图可以绑定到视图模型的属性。比如,`TextBlock`显示用户姓名,`Slider`控制年龄。
```xaml
<TextBox Text="{Binding User.Name}" />
<Slider Minimum="0" Maximum="100" Value={Binding User.Age} />
```
在这个例子中,当`User`对象的数据改变时,`UserViewModel`会通知视图更新,实现数据驱动的用户界面。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)