ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Prism.Interactivity 和 Prism.Modularity 介绍

2020-07-30 21:33:08  阅读:400  来源: 互联网

标签:Interactivity ModuleCatalog container RegisterType Modularity Prism protected ov


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

标签:Interactivity,ModuleCatalog,container,RegisterType,Modularity,Prism,protected,ov
来源: https://www.cnblogs.com/tianya/p/13406427.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有