Prism.Interactivity: 主要用来截取View即界面的一些处理,而这些功能通过vm 不好实现,只能用 CommandBehaviorBase 来截取处理,特别是在处理界面异常很有用。

定义如下:

public class ValidationExceptionBehavior : Behavior<FrameworkElement>

{

// 方法体

}

使用:

界面错误信息的处理:

<Interactivity:Interaction.Behaviors>                <common:ValidationExceptionBehavior></common:ValidationExceptionBehavior>

</Interactivity:Interaction.Behaviors>

键盘事件的处理

<Interactivity:Interaction.Triggers>

<Interactivity:EventTrigger EventName="KeyDown">

<Interactivity:InvokeCommandAction Command="{Binding ButtonKeyDown}"

CommandParameter="{Binding RelativeSource={RelativeSource  Mode=FindAncestor, AncestorType={x:Type Window}}}"/>

</Interactivity:EventTrigger>

</Interactivity:Interaction.Triggers>

注意界面要引用:

xmlns:Interactivity=http://schemas.microsoft.com/expression/2010/interactivity

Prism.Modularity: 模块定义,加载,管理

继承 IModule

public class PositionModule : IModule

{

// 其他内容

///必须实现 Initialize ,注册该模块中使用的服务,vm 等。提供主程序中使用。

public void Initialize()

{

.....

this.container.RegisterType<IOrdersViewModel, OrdersViewModel>();

this.container.RegisterType<IOrdersView, OrdersView>();

this.container.RegisterType<IOrderCompositeViewModel, OrderCompositeViewModel>();

this.container.RegisterType<IPositionSummaryViewModel, PositionSummaryViewModel>();

this.container.RegisterType<IPositionPieChartViewModel, PositionPieChartViewModel>();

this.regionManager.RegisterViewWithRegion(RegionNames.MainRegion,

() => this.container.Resolve<PositionSummaryView>());

this._ordersController = this.container.Resolve<OrdersController>();

}

}

主程序中使用方法:

在 Bootstrapper 中使用:

public class StockTraderRIBootstrapper : UnityBootstrapper

{

protected override void ConfigureModuleCatalog()

{

base.ConfigureModuleCatalog();

ModuleCatalog moduleCatalog = (ModuleCatalog)this.ModuleCatalog;                   moduleCatalog.AddModule(typeof(StockTraderRI.Modules.Position.PositionModule));                     moduleCatalog.AddModule(typeof(StockTraderRI.Modules.News.NewsModule));

}

protected override DependencyObject CreateShell()

{

// Use the container to create an instance of the shell.

Shell view = this.Container.TryResolve<Shell>();

view.DataContext = new ShellViewModel();

return view;

}

protected override void InitializeShell()

{

base.InitializeShell();

App.Current.MainWindow = (Window)this.Shell;

App.Current.MainWindow.Show();

}

protected override Prism.Regions.IRegionBehaviorFactory ConfigureDefaultRegionBehaviors()

{

var factory = base.ConfigureDefaultRegionBehaviors();

return factory;

}

}

这是通过代码实现的,也可以通过 xml 配置文件实现

protected override IModuleCatalog CreateModuleCatalog() {     return ModuleCatalog.CreateFromXaml(new Uri("/MyProject;component/ModulesCatalog.xaml", UriKind.Relative)); }

Prism.Interactivity 和 Prism.Modularity 介绍的更多相关文章

  1. Prism.Interactivity 之 PopupWindowAction 用法简记

    PopupWindow通过InteractionRequestTrigger(EventTrigger的派生类)侦听目标对象(InteractionRequest<T>类型)的Raised ...

  2. [Windows] Prism 8.0 入门(下):Prism.Wpf 和 Prism.Unity

    1. Prism.Wpf 和 Prism.Unity 这篇是 Prism 8.0 入门的第二篇文章,上一篇介绍了 Prism.Core,这篇文章主要介绍 Prism.Wpf 和 Prism.Unity ...

  3. 下载并安装Prism5.0库 Download and Setup Prism Library 5.0 for WPF(英汉对照版)

    Learn what’s included in Prism 5.0 including the documentation, WPF code samples, and libraries. Add ...

  4. WPF Prism MVVM 中 弹出新窗体. 放入用户控件

    原文:WPF Prism MVVM 中 弹出新窗体. 放入用户控件 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/qq_37214567/artic ...

  5. 下载并安装Prism5.0库(纯汉语版)

    Prism5.0中包含了文档,WPF代码示例,程序集.本篇告诉你从哪里获取程序集和代码示例,还有NuGet包的内容. 对于新功能,资产,和API的更改信息,请看Prism5.0新内容. 文档 Pris ...

  6. 1: 介绍Prism5.0 Introduction to the Prism Library 5.0 for WPF(英汉对照版)

     Prism provides guidance designed to help you more easily design and build rich, flexible, and easy- ...

  7. Prism5.0开发人员指南内容 Contents of the Developer's Guide to Prism Library 5.0 for WPF(英汉对照版)

    The Prism for WPF guide contains the following topics: Prism指南包含以下内容: Download and Setup Prism 下载并安装 ...

  8. Prism5.0新内容 What's New in Prism Library 5.0 for WPF(英汉对照版)

    Prism 5.0 includes guidance in several new areas, resulting in new code in the Prism Library for WPF ...

  9. Prism开发人员指南5-WPF开发 Developer's Guide to Microsoft Prism Library 5.0 for WPF (英汉对照版)

    April 2014 2014四月   Prism provides guidance in the form of samples and documentation that help you e ...

随机推荐

  1. python 的迭代

    字典的迭代: #创建字典 dict={'a':1,'b':2,'c':3} #key和value的迭代 for key,value in dict.items(): print(key,':',val ...

  2. Electricity POJ - 2117 + SPF POJ - 1523 去除割点后求强连通分量个数问题

    Electricity POJ - 2117 题目描述 Blackouts and Dark Nights (also known as ACM++) is a company that provid ...

  3. LintCode笔记 - 8. 旋转字符串

    这一题相对简单,但是代码质量可能不是很好,我分享一下我的做题笔记以及做题过程给各位欣赏,有什么不足望各位大佬指出来 原题目,各位小伙伴也可以试着做一下 . 旋转字符串 中文English 给定一个字符 ...

  4. 根据URL下载图片到本地

    /// <summary> /// 下载图片 /// </summary> /// <param name="picUrl">图片Http地址& ...

  5. Mysql 实例:mysql语句练习50题(sqlalchmy写法)

    为了练习sql语句,在网上找了一些题,自己做了一遍,收益颇多.很多地方换一种思路,有更好的写法,欢迎指正. 题目地址:https://blog.csdn.net/fashion2014/article ...

  6. Python之爬虫(二十四) 爬虫与反爬虫大战

    爬虫与发爬虫的厮杀,一方为了拿到数据,一方为了防止爬虫拿到数据,谁是最后的赢家? 重新理解爬虫中的一些概念 爬虫:自动获取网站数据的程序反爬虫:使用技术手段防止爬虫程序爬取数据误伤:反爬虫技术将普通用 ...

  7. 数据可视化之PowerQuery篇(十五)如何使用Power BI计算新客户数量?

    https://zhuanlan.zhihu.com/p/65119988 每个企业的经营活动都是围绕着客户而开展的,在服务好老客户的同时,不断开拓新客户是每个企业的经营目标之一. 开拓新客户必然要付 ...

  8. C#版本说明

    语言版本 发布时间 .NET Framework要求 Visual Studio版本 C# 1.0 2002.1 .NET Framework 1.0 Visual Studio .NET 2002 ...

  9. OSCP Learning Notes - Exploit(2)

    Compiling an Exploit Exercise: samba exploit 1. Search and download the samba exploit source code fr ...

  10. JavaWeb基础(day15)( http + tomcat + servlet + 响应)

    HTTP+Tomcat+Servlet+响应 HTTP HTTP  超文本传输协议(Hyper Text  Transfer  Protocol  ),一种网络协议. 协议的组成和过程 HTTP协议由 ...