
WPF
文章平均质量分 62
lnc2003
这个作者很懒,什么都没留下…
展开
-
Prism4文档翻译(第九章 第二部分)
本节导读:本节说明了如何使用EventAggregator提供模块间的通信。2012-2-3 9.4 事件聚合器Prism提供了事件机制以拿模块间的松耦合交流成为可能。在这个机制中,基于事件聚合服务,订阅者和发布者可以在不互相建立引用的情况下进行通信。EventAggregator提供了多路广播发布者/订阅者的功能。也就是说多个发布者可以发布同一个事件或者同一个事件可以被多转载 2017-01-23 17:09:53 · 430 阅读 · 0 评论 -
Prism研究(for WPF & Silverlight)7.View Injection和View Discovery
一切从这里开始。Prism文档对于这两个概念的解释着实有些扯淡,甚至自相抵牾,还是不要看了,乖乖听额讲吧。 我们晓得,每个Module中,实现了IModule接口的Module类,都要实现该接口的Initialize方法,一方面要注册一些自定义的接口和实现了该接口的类,为接下来的依赖注入做准备;另一方面,就是为Region加载View并显示(初始化View)。 加载View...转载 2017-12-19 16:47:24 · 420 阅读 · 0 评论 -
Prism研究(for WPF & Silverlight)8.Event机制
终于说到Event了。阅读本篇之前,请参阅我的另一篇关于事件的文章:CLR笔记:10.事件 Prism自带的示例与MVP模式的耦合性太大了,以至于看不出Prism框架中独特的Event机制。于是,我自己写了一个超级简单的Sample,以飨读者。 示例代码下载:code.zip 事件的实现很简单,以下是傻瓜化Step by Step: 1. 在公共...转载 2017-12-19 16:49:17 · 478 阅读 · 0 评论 -
PRISM中使用CompositeCommand一点心得体会
在学习CompositeCommand的过程中,遇到单个命令可以执行,CompositeCommand无法执行的问题 关键代码如下:1、声明CompositeCommand public CompositeCommand MyCompositeCommand = new CompositeCommand(); 2、声明两个Delegate...原创 2018-07-03 15:35:11 · 1498 阅读 · 0 评论 -
一步步实现 Prism + MEF(一)--- 搭建框架
第一步:构建一个名为Bootstrapper的类作为引导程序。 class Bootstrapper : MefBootstrapper { }第二步:在MainWindow窗体中添加一个CoontentControl控件作为模块的容器,并在后台代码中添加[Export]属性以便MEF可以注入。窗体代码:<ContentControl prism:R...转载 2018-06-28 15:16:25 · 375 阅读 · 0 评论 -
PRISM运用MEF依赖注入VIEW与viewmodel绑定的方法总结
view页面:view1.xamlviewmodel:view1model.cs 方法1: view1.xaml代码: <Grid> <Grid.ColumnDefinitions> <ColumnDefinition Width="1*"/> ...原创 2018-07-11 14:01:23 · 2063 阅读 · 0 评论 -
Prism模块之间通信的几种方式
在开发大型复杂系统时,我们通常会按功能将系统分成很多模块,这样模块就可以独立的并行开发、测试、部署、修改。使用Prism框架设计表现层时,我们也会遵循这个原则,按功能相关性将界面划分为多个模块,每个模块又包含多个Region。这就需要解决模块之间、Region之间经常需要进行通信的问题,Prism提供了以下几种方式:1、聚合事件(Event aggregation)使用方式,先在一个公共模...转载 2018-07-12 15:38:49 · 2180 阅读 · 0 评论 -
Prism框架(一)—— 概述
Prism框架的设计目的是用来帮助构建丰富、灵活、易维护的WPF和Silverlight应用程序。关键概念Modules:Modules是能够独立开发、测试、部署的功能单元,Modules可以被设计成实现特定业务逻辑的模块(如Profile Management),也可以被设计成实现通用基础设施或服务的模块(如Logging、Exception Management)。Module Cata...转载 2018-07-13 14:19:12 · 1575 阅读 · 0 评论 -
PRISM 扩展Mef 的Export属性为ViewExport
1、新建Infrastructure项目 A、新建IViewRegionRegistration类using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace Infrastructure...原创 2018-09-17 09:17:22 · 604 阅读 · 0 评论 -
Prism研究(for WPF & Silverlight)6.StockTrader RI研究
这套项目源码是Prism框架自带的,涵盖了我们在进行Prism开发时所遇到的绝大部分实际问题。以下若干篇是我近半个月对StockTrader RI(简称RI)研究的系列文章集合,预计共有15篇左右,一并附属于《Prism研究》系列专题之下。 目录: 1.RI架构分析 2.RI主程序分析 3.RI的数据关系 4.Market模块之...转载 2017-12-19 16:46:22 · 455 阅读 · 0 评论 -
Prism研究(for WPF & Silverlight)5.Module研究
终于要坐下来说一说Module的相关技术了。 本来不想讨论Module,因为一旦写好这些框框,以后就再也不会改变了。要知道,我们在Prism中更关心的是MVP模式的拆分。 Module相关技术包括两部分,一是如何加载Module,也就是在Shell的Bootstarpper中重写它的InitializeModules方法,从而把所有需要的Module加载到主程序中。二是...转载 2017-12-19 16:44:24 · 509 阅读 · 0 评论 -
Prism4文档翻译(第五章 第三部分)
特别说明:本节非手动翻译,翻译时,本人使用的工具如下:台式机 *2,笔记本电脑 *1,小刀 *1,十字螺丝刀 *1,一字螺丝刀 *1,笔记本硬盘 *2,启动U盘 *1,移动硬盘 *1,Final Recovery *1,Easy Recovery *1,电子书 *1。翻译过程自行想像,反正用了这些东西以后,Command这一节就翻译出来了,至于后面的那一节,乱码太多了。。。。 于...转载 2017-01-23 17:11:35 · 439 阅读 · 0 评论 -
Prism4 文档翻译系列---第6章 高级MVVM场景
在上一章中描述了如何通过将UI,表现逻辑,业务逻辑分别放到三个单独的类中(View,View Model,Model),实现这些类之间的交互(通过数据绑定,命令以及数据验证接口)以及实现一个策略来处理建筑和绑定的方式实现MVVM的基本元素。 通过使用实现MVVM的这些基本元素的方式可以支持应用程序中许多的应用场景。然而,您可能会遇到更复杂的场景,需要扩展基本MVVM模式或者需要应...转载 2017-01-23 17:13:24 · 1583 阅读 · 0 评论 -
一步步实现 Prism + MEF(一)--- 搭建框架
第一步:构建一个名为Bootstrapper的类作为引导程序。 class Bootstrapper : MefBootstrapper { }第二步:在MainWindow窗体中添加一个CoontentControl控件作为模块的容器,并在后台代码中添加[Export]属性以便MEF可以注入。窗体代码:<ContentControl prism:R...转载 2017-12-18 10:10:12 · 2554 阅读 · 0 评论 -
一步步实现 Prism + MEF(二)--- 绑定命令
Prism程序集为我们提供了DelegateCommand命令,使用该命令可实现窗口直接绑定。第一步:在ViewModel中定义一个DelegateCommand属性。 public DelegateCommand<object> SaveCommand { get; set; }第二步:添加Save和CanSave两个命令相关的方法。 ...转载 2017-12-18 10:11:43 · 751 阅读 · 0 评论 -
WPF访问UserControl的自定义属性和事件
要实现外部窗体能直接访问UserControl的属性必须把UserControl的属性定义为依赖属性:一,在UserControl.cs中为TextBox控件的Text建立依赖属性,输入"propdp"双击TAB都自动生成依赖属性模板,然后修改属性名称为SelectedValue: /// /// 依赖属性 /// arg1:属性名称转载 2017-12-18 14:20:38 · 5293 阅读 · 0 评论 -
WPF命令使用
What命令包含以下部分:命令:一个实现了ICommand接口的类,RoutedCommand是WPF里最常用的命令类,其它命令类大多派生自RoutedCommand命令源:触发命令的对象,如button,menu等命令目标:默认为命令源对象,显示指定CommandTarget=XXX之后,实际执行命令的对象为XXX,可通过执行函数的e.Source进行确认命令关联:把命令源和转载 2017-12-18 14:21:57 · 322 阅读 · 0 评论 -
Prism研究(for WPF & Silverlight) 1-3
Prism研究(for WPF & Silverlight)目录一. Prism概述二. Prism评估三. Prism文档导读四. 从Hello World开始五. Prism中的术语和概念六. Prism中的模式七. Module八. View九. Event十. Command十一. Service十二. Multi-Target...转载 2017-12-19 16:40:47 · 469 阅读 · 0 评论 -
Prism研究(for WPF & Silverlight)4.从Hello World开始(实战篇)
本篇将指导使用Prism框架创建一个WPF版本的Hello World程序。Silverlight版本的程序大同小异,不再敷述。 相关内容请参见文档P127-147,代码示例参加Quickstarts\ Hello World目录。 1.首先我们要准备Prism框架的6个dll,分别是:· Microsoft.Practices.Composite.dll· ...转载 2017-12-19 16:42:44 · 304 阅读 · 0 评论 -
Prism中View与Region关联的几种方法
//方法1 ( ViewDiscovery) this.regionManager.RegisterViewWithRegion("RegionName", typeof(ViewClass)); //方法2 (ViewInjection ) a.MEF view = this.con...原创 2018-09-17 09:53:40 · 1554 阅读 · 0 评论 -
Prism中的Region
1、Region<ContentCotrol prism:RegionManager.RegionName = "MainRegion"/>并不是所有的控件都可以作为Region的,需要为需要定义为Region的控件添加RegionAdapter。RegionAdapter的作用是为特定的控件创建相应的Region,并将控件与Region进行绑定,然后为Region添加一些行为...原创 2018-09-07 10:55:46 · 990 阅读 · 0 评论 -
PRISM 6 命令Command 属性更改时自动通知命令重新更新命令状态的方法
属性更改时自动通知命令重新更新命令状态的方法 方法一 1、 定义属性。性性中添加此句ExecuteDelegateCommand.RaiseCanExecuteChanged();private bool _isEnabled; public bool IsEnabled { get { return _isEnabl...原创 2018-09-26 10:38:06 · 1901 阅读 · 0 评论 -
从PRISM开始学WPF(四)Prism-Module-更新至Prism7.1
0x4ModulesModules是能够独立开发、测试、部署的功能单元,Modules可以被设计成实现特定业务逻辑的模块(如Profile Management),也可以被设计成实现通用基础设施或服务的模块(如Logging、Exception Management)。既然Modules能够独立开发、测试、部署,那么如何告诉Shell(我们的宿主程序)去Load哪些Module,以怎样...转载 2019-04-18 10:47:51 · 459 阅读 · 0 评论 -
从PRISM开始学WPF(五)MVVM(一)ViewModel-更新至Prism7.1
0x5 MVVM[7.1updated]截止到目前,我们看到7.1的更新主要在三个地方PrismApplication ,并且不再使用Bootstrapper 更新了unity,现在使用prism.unity作为容易管理 更新了IModule接口 下面所有代码片段都更新到7.1,并且不再赘述与6.x的区别蛤蛤,终于到MVVM了。特别是前面的Module,忒难写,反正大概知道是怎么用...转载 2019-04-18 10:48:51 · 741 阅读 · 0 评论 -
从PRISM开始学WPF(六)MVVM(二)Command-更新至Prism7.1
命令绑定(Command)[7.1updated]这一节除了基础app部分,并没有什么变化什么是Command?先看下微软官方的说明:Commanding is an input mechanism in Windows Presentation Foundation (WPF) which provides input handling at a more semantic l...转载 2019-04-18 10:49:54 · 543 阅读 · 0 评论 -
从PRISM开始学WPF(七)MVVM(三)事件聚合器EventAggregator-更新至Prism7.1
事件聚合器EventAggregator[7.1updated]除了app部分,没有任何变化Event aggregation. For communication across view models, presenters, or controllers when there is not a direct action-reaction expectation.(⊙﹏⊙),G...转载 2019-04-18 10:50:40 · 865 阅读 · 0 评论 -
从PRISM开始学WPF(番外)共享上下文 RegionContext-更新至Prism7.1
RegionContext共享上下文There are a lot of scenarios where you might want to share contextual information between the view that is hosting a region and a view that is inside a region. For example, a mast...转载 2019-04-18 10:51:23 · 365 阅读 · 0 评论 -
从PRISM开始学WPF(八)导航Navigation-更新至Prism7.1
0x6Navigation[7.1updated] Navigation 在wpf中并没有变化Basic NavigationPrism中的Navigation提供了一种类似导航的功能,他可以根据用户的输入,来刷新UI。先看一个最简单的例子,通过按钮来导航到一个视图,在这里,视图被注册为Navication。7.1中不再使用构造函数注入依赖,而是新增了两个接口OnInitiali...转载 2019-04-18 10:52:05 · 1323 阅读 · 0 评论 -
从PRISM开始学WPF(九)交互Interaction(弹窗)-更新至Prism7.1
0x07交互[7.1updated]无变化这是这个系列的最后一篇了,主要介绍了Prism中为我们提供几种弹窗交互的方式。Notification通知式Prism通过InteractionRequest 来实现弹窗交互,它是一个泛型接口,不同的类型对应不同类型的弹窗方式。在使用InteractionRequest的时候需要在,xaml中需要注册一个Trigger: <...转载 2019-04-18 10:52:58 · 1309 阅读 · 0 评论 -
WPF系统中得到窗体或是控件句柄
1.窗体:IntPtr hwnd = new WindowInteropHelper(this).Handle;2.控件:IntPtr hwnd = ((HwndSource)PresentationSource.FromVisual(uielement)).Handle;句柄的取得不要在构造 函数中取得,此时的vitual还没有产生,在Loaded中 就可以了。us...转载 2019-04-28 09:32:20 · 991 阅读 · 1 评论 -
从PRISM开始学WPF(三)Prism-Region-更新至Prism7.1
[7.1update]在开始前,我们先看下版本7.1中在本实例中的改动。首先,项目文件中没有了Bootstrapper.cs,在上一篇的末尾,我们说过了,在7.1中,不见推荐使用Bootstrapper,相关改动整合到app.xaml和app.xaml.cs中。 然后: app.xaml<prism:PrismApplication x:Class="Regions.App" ...转载 2019-04-18 10:44:14 · 772 阅读 · 0 评论 -
从PRISM开始学WPF(二)Prism-更新至Prism7.1
0x1 PRISM?PRISM项目地址:https://github.com/PrismLibrary/Prism先看下简介:Prism is a framework for building loosely coupled, maintainable, and testable XAML applications in WPF, Windows 10 UWP, and Xamari...转载 2019-04-18 10:41:36 · 872 阅读 · 1 评论 -
UnityContainer中RegisterType与RegisterInstance的区别
应用中同时使用到这两种注册方式,以下是自己的理解 RegisterInstance注册单例模式1 _container.RegisterInstance<INavigationService>(NavigationService);2 _container.RegisterInstance<ISessionState...转载 2018-09-26 14:22:13 · 3878 阅读 · 0 评论 -
PRISM CompositeCommand(复合命令) IActiveAware接口
CompositeCommand(复合命令)在父view级别通常会被用来协调命令在子view级别是如何调用的。在一些情况下,你想要所有的显示View的命令被执行,就像在前面的Save All命令。在另外一些情况下,你想要仅在活跃View的视图中的命令被执行。在这种情况下,复合命令将会执行在被认为是活跃的View中的命令;那些在非活跃View中的命令将不会被执行。例如,你可能在应用程序工具栏或...转载 2018-10-29 14:20:52 · 986 阅读 · 0 评论 -
prism 中 EventAggregator事件过滤(Subscription Filtering)
Subscription FilteringSubscribers may not need to handle every instance of a published event. In these cases, the subscriber can subscribe and supply a delegate that filters the event before the reg...转载 2018-10-29 15:01:22 · 763 阅读 · 0 评论 -
Prism 中 IRegionMemberLifetime接口的用法
// // 摘要: //实现时,允许将实例放置在IRegion中,该IRegion使用RegionMemberLifetimeBehavior表示当它从激活状态转换为非激活状态时应该删除它。 public interface IRegionMemberLifetime { // // 摘要: //获取一个值,...原创 2018-10-30 13:40:04 · 1130 阅读 · 0 评论 -
一步步实现 Prism + MEF(二)--- 绑定命令
Prism程序集为我们提供了DelegateCommand命令,使用该命令可实现窗口直接绑定。第一步:在ViewModel中定义一个DelegateCommand属性。 public DelegateCommand<object> SaveCommand { get; set; }第二步:添加Save和CanSave两个命令相关的方法。 ...转载 2018-06-28 15:18:05 · 468 阅读 · 0 评论 -
WPF中PRISM框架下TabControl中TabItem的Header如何设置
1、在TabControl控件所在页面添加样式<UserControl.Resources> <Style TargetType="{x:Type TabItem}" x:Key="HeaderStyle"> <Setter Property="Header" ...原创 2019-02-25 11:22:17 · 2794 阅读 · 0 评论 -
WPF开源界面库
WPF开源项目WPF有很多优秀的开源项目,我以为大家都知道,结果,问了很多人,其实他们不知道。唉,太可惜了!先介绍两个比较牛逼的界面库1、MaterialDesignInXamlToolkitAndroid风格的界面。2、MahApps.Metro扁平风格的界面。在使用中如果有问题,可以到“Gitter”的相应房间里和开发者进行交流(英...转载 2019-04-17 08:44:38 · 1630 阅读 · 0 评论 -
从PRISM开始学WPF,Prism7更新了什么
[7.1updated]从wpf的实例代码来看,7.1主要更新了几个部分:PrismApplication prismapp现在都是PrismApplication ,这变动主要体现在app.xaml和app.xaml.cs中 xaml中的 Application标签变成了prism:PrismApplication 废弃了Bootsrapper,app 继承Prism.Unity....转载 2019-04-18 10:38:06 · 829 阅读 · 0 评论