2024年5月5日发(作者:)

Prism 一 介绍

Prism是一个在WPF、UWP、Xamarin Forms中构建松散耦合,可维护和可测试的XAML应用程序的框架。

每个平台都有单独版本,这些版本在独立的时间表上开发。

Prism提供一组设计模式的实现,这些设计模式有助于编写结构良好且可维护的XAML应用程序,包括

MVVM,依赖注入,命令,EventAggregator等。

Prism的核心功能是针对这些平台的共享代码库。

那些需要特定于平台的东西在目标平台相应库中实现。

Prism还提供了这些模式与目标平台的完美集成。

例如,Prism for UWP和Xamarin Forms允许使用抽象来进行可单元测试的导航,和在平台概念和API之上进行

导航,以便可以充分利用平台本身提供的功能。

Prism 6是完全开源版本。核心团队成员都是开发Prism 1到5的团队的一部分,现在已经将转交给开源社区,

保持它活跃和发展,以支持.NET社区。

有成千上万的公司为WPF,Silverlight和Windows Runtime采用了之前版本的Prism,我们希望他们将继续与

我们一起继续发展和改进框架,以跟上当前平台功能和要求。

目前,还没有计划为Silverlight或Windows 8 / 8.1 / WP8.1创建新版本的库。对于那些你仍然可以使用早期版

本。如果有足够兴趣和贡献者来完成这项工作,可以考虑一下,但目前不在开发的路线图上。

Prism 二 命令

除了在视图中对数据进行显示或编辑外,ViewModel还可能定义由用户执行的一个或多个动作。

用户可以通过UI执行的动作通常被定义为命令。命令提供一种方便的方法绑定到UI中的控件的动作。它封装了

实现动作的实际代码,并使其与视图中的实际可视化表示分离。

当用户与视图交互时,用户可以以多种不同的方式直观地表示和调用命令。在大多数情况下,它们是通过鼠标

单击调用的,但也可以通过快捷键按下,触摸手势或任何其他输入事件来调用。视图中的控件绑定到

ViewModel命令,以便用户可以使用控件定义的任何输入事件或手势来调用。视图中的UI控件与命令之间的交

互可以是双向的。所以,可以在用户与UI交互时调用该命令,并且可以在启用或禁用命令时自动启用或禁用

UI。

ViewModel可以将命令实现为命令对象(实现ICommand接口的对象)。可以以声明方式定义视图与命令的交

互,无需在视图的代码隐藏文件中使用复杂的事件处理代码。例如,某些控件本身支持命令并提供Command

属性,该属性可以是绑定到ViewModel提供的ICommand对象的数据。在其他情况下,命令行为可用于将控件

与ViewModel提供的命令方法或命令对象相关联。

实现ICommand接口非常简单。Prism提供了此接口的DelegateCommand实现,您可以在应用程序中使用它。

注意

DelegateCommand在ds命名空间中,该命名空间位于 NuGet包中。

创建 DelegateCommand

Prism DelegateCommand类封装了两个委托,每个委托引用ViewModel类中实现的方法。它通过调用这些委

托来实现ICommand接口的Execute和CanExecute方法。在DelegateCommand类构造函数中指定ViewModel

方法的委托。例如,以下代码示例显示如何通过指定OnSubmit和CanSubmit ViewModel方法的委托来构造表

示Submit命令的DelegateCommand实例。然后,该命令通过只读属性公开给视图,该属性返回对

DelegateCommand的引用。

public class ArticleViewModel

{

public DelegateCommand SubmitCommand { get; private set; }

public ArticleViewModel()

{

SubmitCommand = new DelegateCommand(Submit, CanSubmit);

}

void Submit(object parameter)

{

//implement logic

}

bool CanSubmit(object parameter)

{

return true;

}

}

当在DelegateCommand对象上调用Execute方法时,它只是通过您在构造函数中指定的委托将调用转发到

ViewModel类中的方法。类似地,当调用CanExecute方法时,将调用ViewModel类中的相应方法。构造函数

中CanExecute方法的委托是可选的。如果未指定委托,则DelegateCommand将始终为CanExecute返回

true。

DelegateCommand类是泛型类型。type参数指定传递给Execute和CanExecute方法的命令参数的类型。在前

面的示例中,command参数的类型为object。Prism还提供了非泛型版本的DelegateCommand类,以便在不

需要命令参数时使用,并定义如下:

public class ArticleViewModel

{

public DelegateCommand SubmitCommand { get; private set; }

本文发布于:2024-05-05,感谢您对本站的认可!
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:命令视图平台实现版本

发布评论

评论列表(有0条评论)
    编程教学|福州电脑网

    编程教学|福州电脑网

    编程教学