要以“ MVVM方式”来实现

时间:2021-11-08 06:53:36

XAML 应用的开发过程中,使用MVVM 框架能够极大地提高软件的可测试性、可维护性。MVVM的核心思想是存眷点疏散,使得业务逻辑从 View 中疏散出来到 ViewModel 以及 Model 中,从逻辑上来讲,这也是业务逻辑应该处的位置。 

具体来说,借助于数据绑定 (Data Binding) 以及命令 (Command) 等这些XAML 平台自身所供给的机制,使得 MVVM 在 XAML 平台上很容易实现。但是,如果你对 XAML 应用开发以及 MVVM 的使用有必然的经验,你会发明,纯挚 MVVM 自己并不能解决所有问题,好比页面导航、弹出对话框、窗口操纵等,这时就需要结合一些与它相关的技术,如动静、行为、处事以及依赖注入等。这个原因是 MVVM 主要针对的是 View 的内容,而不是 View 自己的操纵或其它另外对象,所以像弹出窗口或者页面导航之类的操纵就需要上述技术的共同。 

更具体一点,在 WPF 应用的开发过程中,很多时候我们需要打开和*窗口。要以“MVVM方法”来实现,就不容易。固然,我们可以使用动静来解决这个问题。不过,如果过多地使用动静,也会使代码难以维护并且增加调试的难度。 

本文主要通过分享一个类库来解决这一问题:WpfWindowToolkit,就如名称所示,它是针对窗口的一些操纵类的调集

要以“ MVVM方式”来实现

一、根基介绍

从介绍里,我们可以看出,它可以解决窗口的打开与*,以及在窗口间通报参数和返回值等类的问题,而实现这一切都不需要我们在 View 的 CodeBehind 中写任何代码,也不需要借助于动静,所需要作的改削仅在 XAML 代码和 ViewModel 中,从而遵循了 MVVM 的原则并到达了其目的。 

Github 下载到源码后,此中有 Demo,通过这个 Demo 我们可以了解它是如何使用的。在以下的内容里,我们先简单对它有些了解,更为具体的内容则可以看它的源码和 Demo。

二、安置

要在项目中使用它,可以从 Nuget 上下载,或者直接使用命令:

InstallPackage WpfWindowToolkit

三、如何使用 1. 打开窗口

有两种方法:使用附加属性或行为。

在使用时,需要先添加定名空间:

xmlns:behaviors="clr-namespace:PraiseHim.Rejoice.WpfWindowToolkit.Behaviors;assembly=WpfWindowToolkit" xmlns:helpers="clr-namespace:PraiseHim.Rejoice.WpfWindowToolkit.Helpers;assembly=WpfWindowToolk

附加属性:

<Button x:Name="btn1" helpers:WindowHelper.OpenWindowType="{x:Type local:Window1}" Content="Open window using Window Helper" />

行为:

<Button x:Name="btn5" Margin="0,5,0,0" Content="Open window with parameter using action"> <i:Interaction.Triggers> <i:EventTrigger EventName="Click"> <behaviors:OpenWindowAction Parameter="WPF (action)" WindowType="{x:Type local:Window1}" /> </i:EventTrigger> </i:Interaction.Triggers> </Button>

可以看出,它们都是通过将要打开的窗口的类型(Type) 指定给 WindowType 属性。

2. 打开窗口时通报参数