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)); }

最新文章

  1. meta 详解,html5 meta 标签日常设置
  2. 算法练习:寻找最小的k个数
  3. WPF: 旋转Thumb后,DragDelta移动距离出错的解决
  4. 入门训练 A+B问题
  5. leetcode 91 Decode Ways ----- java
  6. The str method
  7. Golang官方图片库
  8. Linux系统下安装ISO文件
  9. 转:尝试用Gearman实现分布式处理(PHP)
  10. 利用反射的特性将DataReader对象转化为List集合
  11. 为什么子线程不能做UI操作
  12. leetcode 561.Array Partition I-easy
  13. thinkphp5在Linux下Nginx配置问题解决
  14. Cutterman - 最好用的切图工具
  15. Android事件总线(四)源码解析otto
  16. Leetcode 414.Fizz Buzz By Python
  17. zookeeper的Java客户端API
  18. winscp中使用sudo的方法
  19. Windows cordova build Error: Could not find gradle wrapper within Android SDK.(转)
  20. WCF配置后支持通过URL进行http方式调用

热门文章

  1. CSS中link和@import的使用区别
  2. 小烈送菜——奇怪的dp
  3. 获取本机SqlServer名称
  4. 浅析Python垃圾回收机制!
  5. less基础
  6. 【Python】关于如何判断一个list是否为空的思考
  7. 老司机带你玩转面试(4):Redis 高可用之哨兵模式
  8. Java开发中的eclispe常用快捷键&amp;全部快捷键
  9. Ethical Hacking - NETWORK PENETRATION TESTING(7)
  10. Linux内核功能介绍及如何使用保护您的网页安全