当前位置:   article > 正文

WPF学习(7) --MVVM模式

WPF学习(7) --MVVM模式

1. MVVM模式概述

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

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

2. MVVM模式在WPF中的实现

2.1 Model   Model: Person.cs

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

  1. public class Person
  2. {
  3. public string Name { get; set; }
  4. public int Age { get; set; }
  5. }

2.2 ViewModel   ViewModel: PersonViewModel.cs

ViewModel负责从Model获取数据并准备好供View使用。ViewModel通常实现INotifyPropertyChanged接口,以便通知View属性值的变化。

  1. using System.ComponentModel;
  2. public class PersonViewModel : INotifyPropertyChanged
  3. {
  4. private Person _person;
  5. public PersonViewModel()
  6. {
  7. _person = new Person { Name = "John Doe", Age = 30 };
  8. }
  9. public string Name
  10. {
  11. get { return _person.Name; }
  12. set
  13. {
  14. if (_person.Name != value)
  15. {
  16. _person.Name = value;
  17. OnPropertyChanged("Name");
  18. }
  19. }
  20. }
  21. public int Age
  22. {
  23. get { return _person.Age; }
  24. set
  25. {
  26. if (_person.Age != value)
  27. {
  28. _person.Age = value;
  29. OnPropertyChanged("Age");
  30. }
  31. }
  32. }
  33. public event PropertyChangedEventHandler PropertyChanged;
  34. protected void OnPropertyChanged(string propertyName)
  35. {
  36. PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
  37. }
  38. }

2.3 View   View: MainWindow.xaml

View是用户界面部分,使用XAML定义界面布局和绑定。下面是一个简单的View示例:

  1. <Window x:Class="MVVMExample.MainWindow"
  2. xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  3. xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
  4. Title="MainWindow" Height="200" Width="400">
  5. <Grid>
  6. <StackPanel>
  7. <TextBox Text="{Binding Name, UpdateSourceTrigger=PropertyChanged}" />
  8. <TextBox Text="{Binding Age, UpdateSourceTrigger=PropertyChanged}" />
  9. <TextBlock Text="{Binding Name}" />
  10. <TextBlock Text="{Binding Age}" />
  11. </StackPanel>
  12. </Grid>
  13. </Window>

2.4 Code-Behind: MainWindow.xaml.cs

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

  1. public partial class MainWindow : Window
  2. {
  3. public MainWindow()
  4. {
  5. InitializeComponent();
  6. DataContext = new PersonViewModel();
  7. }
  8. }
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小桥流水78/article/detail/841002
推荐阅读
相关标签
  

闽ICP备14008679号