WPF
albert528108
十年以上C#.NET开发,熟悉MES系统
展开
-
Silverlight技术之Style和StaticResource
了解并使用Silverlight就不得不提到Style和StaticResources,简单的Style应用大家都知道,本篇重点讲解,怎么在控件上同时指定两个样式?怎么使用StaticResource设置一个固定的集合,即将一个固定的集合列表绑定到控件上?下边直接开始相关的应用示例,先说第一个Style设置Button按钮,第一个Button样式设置其FontSize,Foreground,Fon转载 2015-03-23 14:41:09 · 641 阅读 · 0 评论 -
Prism框架(四)——MVVM模式基础
在MVVM模式中,View封装UI和UI逻辑,viewmodel封装presentation逻辑,model封装业务逻辑和数据。View类View的责任是定义屏幕上的结构和外观,在完美的情况下,view的code behind只包含一个调用InitializeComponent的构造函数,但是通常情况下,code behind会包含XAML标签难以表达的UI转载 2016-08-04 20:21:58 · 1498 阅读 · 0 评论 -
理解WPF中的视觉树和逻辑树
理解WPF中的视觉树和逻辑树 Understanding the Visual Tree and Logical Tree in WPF这篇文章讨论WPF中视觉树和逻辑树的细微差别。同时提供了一个小程序供读者稍后分析。如果你已经对着两个概念完全不熟悉,我建议你先读SDK文档中的这篇文章“URL”。背景目前SDK文档中关于视觉树和逻辑树的介绍还不是很完全。从我一开始接触WPF, 我就对翻译 2016-08-09 10:44:18 · 1489 阅读 · 0 评论 -
通过创建 ControlTemplate 自定义现有控件的外观
ControlTemplate指定控件的可视结构和可视行为。 可以通过为控件指定新 ControlTemplate 自定义该控件的外观。创建 ControlTemplate 后,可以在不更改现有控件的功能的情况下更改其外观。例如,您可以将应用程序中的按钮设置为圆形,而不是默认的方形,但该按钮仍将引发 Click 事件。本主题介绍 ControlTemplate 的各个部分,演示翻译 2016-08-09 10:46:19 · 1116 阅读 · 0 评论 -
Prism应用开发(一)—— 概述
Prism框架的设计目的是用来帮助构建丰富、灵活、易维护的WPF和Silverlight应用程序。关键概念Modules:Modules是能够独立开发、测试、部署的功能单元,Modules可以被设计成实现特定业务逻辑的模块(如Profile Management),也可以被设计成实现通用基础设施或服务的模块(如Logging、Exception Management)。Module C转载 2016-08-12 09:10:33 · 800 阅读 · 0 评论 -
Prism应用开发(二)——Prism应用程序初始化
Bootstrapper主要用来初始化Prism应用程序,其处理流程如图:在Prism应用中,Bootstrapper的开发过程如下:override基类的BootstrapperUnity基类提供了UnityBootstrapper和MefBootstrapper,可以根据实际的应用选用不同的Bootstrapper。[csharp] view plain转载 2016-08-12 09:11:28 · 1201 阅读 · 0 评论 -
Prism应用开发(三)——基于模块的应用程序开发
Prism使用模块(Module)的概念来对应用程序进行划分。一个module封装相关的关注点,并且具有单一的职责。module既可以按照应用程序的业务逻辑进行划分,也可以按照应用程序的架构层次进行划分。很多大型应用可能会同时包含两种类型的Module。下图中,按照应用程序的业务逻辑进行模块划分:下图中,按照应用程序的架构层次进行模块划分:下面是设计模块的一些例子:转载 2016-08-12 09:12:16 · 603 阅读 · 0 评论 -
Prism应用开发(四)——MVVM模式基础
在MVVM模式中,View封装UI和UI逻辑,viewmodel封装presentation逻辑,model封装业务逻辑和数据。View类View的责任是定义屏幕上的结构和外观,在完美的情况下,view的code behind只包含一个调用InitializeComponent的构造函数,但是通常情况下,code behind会包含XAML标签难以表达的UI逻辑代码,所谓UI逻辑代转载 2016-08-12 09:12:58 · 424 阅读 · 0 评论 -
Prism应用开发(五)——MVVM模式关键技术
一、Data BindingData Binding在MVVM模式中起到了重要的作用,WPF提供了强大的数据绑定功能,因此在设计view和model时应该充分利用这些能力,这意味着你必须实现正确的接口。1)WPF支持one-way binding和two-way binding,two-way binding会将用户对界面数据的修改自动更新到底层数据对象。2)为了将view mod转载 2016-08-12 09:13:33 · 983 阅读 · 0 评论 -
Prism应用开发(六)——MVVM高级话题
一、CommandsComposite Commands情景:上述情景中,Submit All Command的逻辑是要调用所有Submit Command的逻辑。解决方案: Prism中提供了CompositeCommand,这个类持有一组child command,CompositeCommand在执行的时候将会调用每一个child command的Execute方法,转载 2016-08-12 09:14:10 · 686 阅读 · 0 评论 -
Prism应用开发(七)——导航
导航可以分为两种:通过visual tree上控件状态变化的导航(例如,变化展现形式)称为State-based导航,通过在visual tree上增加或移除元素的导航被称为view-based导航,Prism对两种导航都提供了支持。一、State-based导航用不同的格式或者Style展现数据情景:上面的例子中,同样的数据被通过两种方式展现出来,列表形式和图标形式。因为转载 2016-08-12 09:14:57 · 935 阅读 · 0 评论 -
Prism框架(三)——基于模块的应用程序开发
Prism使用模块(Module)的概念来对应用程序进行划分。一个module封装相关的关注点,并且具有单一的职责。module既可以按照应用程序的业务逻辑进行划分,也可以按照应用程序的架构层次进行划分。很多大型应用可能会同时包含两种类型的Module。下图中,按照应用程序的业务逻辑进行模块划分:下图中,按照应用程序的架构层次进行模块划分:下面是设计模块的一些例子:一个模块可以是包转载 2016-08-04 20:21:07 · 1911 阅读 · 0 评论 -
Prism框架(二)——Prism应用程序初始化
Bootstrapper主要用来初始化Prism应用程序,其处理流程如图:在Prism应用中,Bootstrapper的开发过程如下:override基类的BootstrapperUnity基类提供了UnityBootstrapper和MefBootstrapper,可以根据实际的应用选用不同的Bootstrapper。[csharp]转载 2016-08-04 20:20:14 · 1612 阅读 · 0 评论 -
Prism框架(一)—— 概述
Prism框架的设计目的是用来帮助构建丰富、灵活、易维护的WPF和Silverlight应用程序。关键概念Modules:Modules是能够独立开发、测试、部署的功能单元,Modules可以被设计成实现特定业务逻辑的模块(如Profile Management),也可以被设计成实现通用基础设施或服务的模块(如Logging、Exception Management)。Module C转载 2016-08-04 20:19:21 · 12796 阅读 · 0 评论 -
WPF深入浅出话资源
我们把有用的东西称为资源。“兵马未动,粮草先行”-----程序中的各种数据就是算法的原料和粮草。程序中可以存放数据的地方有很多,可以放在数据库里、可以存储在变量里。介于数据库存储和变量存储之间,我们还可以把数据存储在程序主体之外的文件里。外部文件与程序主体分离,这就有可能丢失或者损坏,编译器允许我们把外部文件编译进程序主体、称为程序主体不可分割的一部分。这就是传统意义上的程序资源(也称为二进制资源转载 2015-03-23 15:15:32 · 635 阅读 · 0 评论 -
WPF中的DesignMode判断
WPF中提供你一个类似WinForm的DesignMode属性的方法来判断当前是否处于设计器模式: bool IsInDesignMode { get { return DesignerProperties.GetIsInDesignMode(this); } }对于非UI对象,要判断是否处于设计器模式,则可以这么使用:转载 2016-05-25 22:45:30 · 1142 阅读 · 0 评论 -
Dispatcher介绍
F引入了Dispatcher,那么这个Dispatcher的主要作用是什么呢? 不管是WinForm应用程序还是WPF应用程序,实际上都是一个进程,一个进程可以包含多个线程,其中有一个是主线程,其余的是子线程。在WPF或WinForm应用程序中,主线程负责接收输入、处理事件、绘制屏幕等工作,为了使主线程及时响应,防止假死,在开发过程中对一些耗时的操作、消耗资源比较多的操作,都会去创建一转载 2016-05-26 08:20:24 · 46907 阅读 · 3 评论 -
介绍WPF中DependencyProperty的一些基本用法
这一篇Post中,我准备先介绍WPF中DependencyProperty的一些基本用法。 在程序中使用DependencyProperty好的,我相信你已经决定了要使用DependencyProperty而不是传统的CLR属性,正如上一篇Post所说,很多地方都需要使用到DependencyProperty,作为例子,我决定定义一个MyBorderEx,在WPF常用的"Border转载 2016-06-14 14:54:29 · 8660 阅读 · 0 评论 -
MEF程序设计指南一:在应用程序中宿主MEF
在应用程序中宿主MEF其实非常简单,只需要创建一个组合容器对象(CompositionContainer)的实例,然后将需要组合的部件(Parts)和当前宿主程序添加到容器中即可。首先需要添加MEF框架的引用,既System.ComponentModel.Composition.dll,详细如下代码块:转载 2016-08-02 22:10:34 · 795 阅读 · 0 评论 -
WPF与Prism一并学习(一)
结合别人对Prism 4.0的文档翻译学习http://www.cnblogs.com/Pray4U/tag/Prism/学习Prism的前提条件使用Prism需要您拥有开发WPF或者Silverlight应用程序的经验。这样你会熟悉在Prism中大量使用的重要概念。他们包含:l XAML,这是一种描述和初始化WPF和Silverlight应用程序用户界面的转载 2016-08-03 22:41:55 · 5447 阅读 · 1 评论 -
WPF与Prism一并学习(二)
深度理解XAML本质XAML到底是个啥玩意?从表面看,它是XML的子集,没错!那有人说,HTML也是啊!没错!他们都是!只不过HTML解析是由浏览器完成(HTML解析原理),XAML是由CLR完成.但解析以后的产物则完全不同,HTML解析纯粹是浏览器为了渲染出页面做的工作,XAML确是为了生成一个类,来取代原来Winform窗体类的desinger分部类文件,这一点可以通过观察反编译生成的IL转载 2016-08-03 22:42:40 · 834 阅读 · 0 评论 -
WPF与Prism一并学习(三)
深度解析 TypeConverter & TypeConverterAttribute (一)深度解析 TypeConverter & TypeConverterAttribute (二)使用TypeConverter类将XAML标签的Attribute与对象的Property进行映射先我们准备一个类:[csharp] view转载 2016-08-03 22:43:31 · 1339 阅读 · 0 评论 -
WPF与Prism一并学习(四)
创建WPF程序的三种方式:1.只使用代码2.使用代码和未经编译的标记(XAML)3.使用代码和编译过的标记(BAML)第一种不写了,比较简单第二种:所谓的第二种方法就是直接读一个XAML文件,解析它并创建界面元素,要注意的是要读的XAML文件属性要设置成如下的样子[csharp] view plain copypr转载 2016-08-03 22:44:16 · 1347 阅读 · 0 评论 -
WPF与Prism一并学习(五)
关于WPF的布局部分不想写了,感觉比较散乱,其实找本书看看基本也讲的八九不离十了,一般都讲的很清楚,又好懂无非就是Grid,StackPanel,DockPanel,WrapPanel,Canvas那些,用的熟了自然也没什么障碍的.唯一一个大多数书上写的不清不楚的就是"依赖属性"这个玩意,MSDN是这样解释依赖属性的当您定义自己的属性并需要它们支持 Windows Pr转载 2016-08-03 22:45:45 · 1159 阅读 · 0 评论 -
Prism应用开发(八)——松耦合组件之间通信
一、Commands创建一个全局的command,该command将会在各个组件之间共享。[csharp] view plain copyprint?public static class GlobalCommands { public static CompositeCommand MyCompositeCommand = new Comp原创 2016-08-12 09:15:34 · 1240 阅读 · 0 评论