小透明
发布于 2024-12-27 / 18 阅读
0
0

如何在MVVM中方便的处理WPF窗口事件

#C#

在网上搜索相关的资料时会发现,大部分教程都会让你引入Microsoft.Xaml.Behaviors.Wpf,但这种方法个人觉得有以下这些缺点

  • 需要写太多的XAML

  • 无法自由传递参数

  • EventName、MethodName等属性无法享受到自动提示

我无法接受这些缺点,于是自己琢磨了一个相对方便的方法。

在WPF中快乐的使用ViewModel处理事件_2_小透明_来自小红书网页版.jpg

  1. 先利用编辑器在View层(MainWindow里)生成对应的事件方法(图2)。

  2. 再将生成的方法复制一份到ViewModel中。

  3. 在View层中,通过图3的方式将接收到的事件传递给ViewModel。 这种方法的好处是,事件方法由IDE负责生成,整个传递过程清晰明了,能够享受IDE的代码提示,最重要的是,不用引入额外的库 。

public partial class MainWindow : Window
{

  public MainWindow()
  {
    InitializeComponent();
  }

  private void Window_Loaded(object sender, RoutedEventArgs e)
  {
    if (DataContext is MainViewModel vm)
    {
      vm.Window_Loaded(sender, e);
    }
  }
}


评论