WPF学习(7) --MVVM模式

1. MVVM模式概述

MVVM模式由三个主要部分组成:

  • Model(模型):包含应用程序的业务逻辑和数据。通常是数据对象和数据访问层。
  • View(视图):用户界面部分,展示数据并与用户进行交互。通常是XAML文件。
  • ViewModel(视图模型):视图与模型之间的桥梁。它从Model中获取数据并准备好让View使用,同时处理用户的交互。

2. MVVM模式在WPF中的实现

2.1 Model   Model: Person.cs

Model通常是数据实体类和数据访问层,可以从数据库或服务中获取数据。下面是一个简单的Model示例:

public class Person
{
    public string Name { get; set; }
    public int Age { get; set; }
}

2.2 ViewModel   ViewModel: PersonViewModel.cs

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));
    }
}

2.3 View   View: MainWindow.xaml

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>

2.4 Code-Behind: MainWindow.xaml.cs

要使绑定工作,需要在窗口的代码后面设置DataContext:

public partial class MainWindow : Window
{
    public MainWindow()
    {
        InitializeComponent();
        DataContext = new PersonViewModel();
    }
}

相关推荐

  1. WPF学习(7) --MVVM模式

    2024-07-16 12:44:05       28 阅读
  2. WPF MVVM模式与DI:高度兼容的结构

    2024-07-16 12:44:05       64 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-16 12:44:05       67 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-16 12:44:05       72 阅读
  3. 在Django里面运行非项目文件

    2024-07-16 12:44:05       58 阅读
  4. Python语言-面向对象

    2024-07-16 12:44:05       69 阅读

热门阅读

  1. HDMI Retimer

    2024-07-16 12:44:05       19 阅读
  2. Web开发:<p>标签作用

    2024-07-16 12:44:05       23 阅读
  3. 相交线和平行线

    2024-07-16 12:44:05       21 阅读
  4. 微服务框架乾坤沙箱机制实现的原理

    2024-07-16 12:44:05       26 阅读
  5. 力扣题解(交错字符串)

    2024-07-16 12:44:05       26 阅读
  6. 排序-归并排序

    2024-07-16 12:44:05       30 阅读
  7. C#中Dapper的使用教程

    2024-07-16 12:44:05       24 阅读
  8. 运行时动态调整 Pod 的 CPU 及 Memory 资源

    2024-07-16 12:44:05       27 阅读
  9. Python面经

    2024-07-16 12:44:05       24 阅读