随笔分类 - WPF MVVM(Prism、Cinch)
WPF Silverlight相关
摘要:由于公司开发的技术需求,近期在学习MVVM模式开发WPF应用程序。进过一段时间的学习,感受到:学习MVVM模式,最好的方法就是用MVVM做几个Demo,因为编程里面的东西还是原来的WPF的相关知识。最近学习的资料来源大多为CodePlex、CodeProject和MSDN,以及博客园MS的MVP刘铁锰的一些资料。前面几篇博文DebugLZQ写了,如何来写MVVM,以及Prism框架的安装等等。本篇在前面的基础上,通过一个相对复杂一点的Demo,来学习Prism中的一些类的使用。首先来介绍下今天这个Demo要实现的功能,今天开启的系统是XP,所以下面各位看到的将是XP风格的界面。:·界
阅读全文
摘要:前面的博文My First MVVM Demo,DebugLZQ用MVVM实现了一个简单的Demo。本文旨在使用Prism提供的一些现有类,来简化前面Hello MVVM。关于Prism的安装,可以参考DebugLZQ前面的博文Prepare for Prism。为了使用Prism框架提供的DelegateCommand、NotificationObject需要添加Prism的引用,参考前面的博文。实现MainWindowViewModel类如下:using System;using Microsoft.Practices.Prism.ViewModel;//using Microsoft.P
阅读全文
摘要:Prism框架由MS patterns&practices团队开发。下面是Prism的介绍: Prism provides guidance designed to help you more easily design and build rich, flexible, and easy-to-maintain Windows Presentation Foundation (WPF) desktop applications and Silverlight Rich Internet Applications (RIAs) and Windows Phone 7 applicati
阅读全文
摘要:关于什么是MVVM partten,及MVVM partten的相关理论介绍这篇博文就不多说了,各位可以去看下Youtube相关的tutorial。LZ也是在Youtube、CodePlex和CodeProject上看了许久的教材后,写下了这篇博文,类似的例子外文的网站上很多。写作这篇随笔的目的是,感受一下如何写一个MVVM的WPF 程序。MS的WPF MVP刘铁锰给的一个视频对MVVM的介绍也不错,示例也很好。作为一个MVVM的初学者,希望能通过这篇博文,展现MVVM代码的写作流程。Beginerto Beginer,为此,LZ在代码中添加了必要的说明。我们的Demo设计的界面如下: ...
阅读全文
摘要:出于MVVM学习的需要,复习下匿名方法和Lambda表达式,因为之前用的也比较少,所以用的也不是很熟练,Baidu下相关的知识,写了这个Demo,目标是用简单的方法展示这个怎么用。这里偏重的和LINQ中的Lambda表达式var filesLookup = files.ToLookup(f=>f.Substring(f.LastIndexOf('.')).ToUpper());有些不同,两种不同的地方使用吧。DebugLZQ把要写的话,都写在Demo的注释中了,相关类似的东西网上很多,这里就不墨迹了,如下:using System;namespace 匿名函数和Lambd
阅读全文
摘要:在UIElement类的成员中可以找到BitmapEffect和Effect两个属性,这两个属性都用来为UI元素添加效果,MS的官方网站和一些开源网站上已经有很多效果类库可以使用。Effect由于GPU加速,所以性能较好,可以说是Effect代替了BitmapEffect,不过在WPF4.0中BitmapEffect仍然可以使用。<Button Width="200" Height="100" Background="Red" Content="DropShadowEffect" FontSize="
阅读全文
摘要:在实际的编程工作中,我们可以只是用事件,不用命令,程序的逻辑也一样被驱动的很好,但我们不能阻止程序员按照自己的习惯去写代码。比如保存事件的处理器,程序员们可以写Save()、Savehandler()、SaveDocument()...这些都符合代码规范,但是迟早有一天整个项目会变得无法读懂,新来的程序员或者修改bug的程序员会很抓狂。WPF命令简介 WPF的命令是实现了ICommand接口的类。ICommand接口非常简单,只包含两个方法和一个事件。Execute方法:命令执行,或者说命令作用于目标之上。CanExecute方法:在执行之前来弹指命令是否可被执行。CanExecuteCh..
阅读全文
摘要:WPF中的路由事件 as U know,和以前Windows消息事件区别不再多讲,这篇博文中,将首先回顾下WPF内置的路由事件的用法,然后在此基础上自定义一个路由事件。1.WPF内置路由事件 WPF中的大多数事件都是路由事件,WPF有3中路由策略:具体不多讲,单需要注意的是WPF路由事件是沿着VIs...
阅读全文
摘要:DependencyObject和DependencyPorperty两个类是WPF属性系统的核心。在WPF中,依赖对象的概念被DependencyObject类实现;依赖属性的概念则由DependencyPorperty类实现。必须使用依赖对象作为依赖属性的宿主,二者结合起来,才能实现完整的Binding目标被数据所驱动。DependencyObject具有GetValue和SetValue两个方法,用来获取/设置依赖属性的值。DependencyObject是WPF系统中相当底层的一个基类,如下:从这颗继承树可以看出,WPF的所有UI控件都是依赖对象。WPF的类库在设计时充分利用了依赖属性
阅读全文
摘要:WPF中的Style类似于Web应用程序中的CSS,它是控件的一个属性,属于资源的一种。通常把Style定义在Resources中,使用方式如下:<Windows.Resources> <Style x:Key="btnstyle" TargetType="Button"> <Setter Property="Width" Value="80"/> <Setter Property="Height" Value="50"/> &
阅读全文
摘要:Binding是WPF的核心,而数据的转换与校验是与Binding配套的,其重要性不言而喻,前面介绍了WPF的Binding,现在来看下Converter&Validation。本文目标是以简单的Demo展示Converter&Validation的用法。Binding用于数据有效性校验的是Binding的ValidationRules属性,用于数据类型转换的是Binding的Converter属性。当Source端Path所关联的数据与Target目标属性数据类型不一致是,我们可以添加数据转换器。给出一个Demo。首先在xaml界面中定义一个Grid。 <Grid>
阅读全文
摘要:Binding及与之配套的数据转换和校验是WPF的核心。一些详细的只是介绍,园子里到处都是,这里DebugLZQ不再赘述。首先回顾下WPF常用的Binding数据源1.控件属性---控件的属性与属性Binding 经典的例子如下:<TextBox Height="23" HorizontalAlignment="Left" Margin="28,42,0,0" Name="textBox1" VerticalAlignment="Top" Width="120" Tex
阅读全文
摘要:本片博文接上一篇:.NET多线程执行函数,给出实现一个线程更新另一个线程UI的两种方法。Winform中的控件是绑定到特定的线程的(一般是主线程),这意味着从另一个线程更新主线程的控件不能直接调用该控件的成员。控件绑定到特定的线程这个概念如下:为了从另一个线程更新主线程的Windows Form控件,可用的方法有:首先用一个简单的程序来示例,这个程序的功能是:在Winfrom窗体上,通过多线程用label显示时间。给出下面的两种实现方式1.结合使用特定控件的如下成员 InvokeRequired属性:返回一个bool值,指示调用者在不同的线程上调用控件时是否必须使用Invoke()方法。如果主
阅读全文
摘要:微软在刚刚开始的 Windows Phone 开发者峰会上正式发布了代号阿波罗的 Windows Phone 8 操作系统。虽然微软之前几乎没在公开场合提过阿波罗,但新系统变化的大方向早已泄漏。不过整个发布会依然充满惊喜,微软整整演示了一个多小时新功能,完全不是之前所说的“初窥(Sneak Peek)”。 改用Windows 内核 三年半前,微软内部开始研发新移动系统替代无力抗衡竞争对手的 Windows Mobile。2010 年推出的 Windows Phone 7 系统引入 Metro 用户界面,彻底推翻老系统的用户界面。 但 Windows Phone 7 的内核仍然是 WinC...
阅读全文
摘要:终于在Wp7.1中加入了数据库,使保存、查找、插入数据不再痛苦。在WP7中如果要做到这些,要么使用XML自已实现,要么使用第三方数据库,但是第三方数据库要么性能不好,要么占用空间太大,要么收费,现在总算有原生的本地数据库了。1. 架构 这个本地数据库,不能直接支持Transact-SQL,需要通过LINQ to SQL 对象模型作为Proxy来操作数据库,为此引入了一个新的类System.Data.Linq.DataContext。这与windows mobile上的SQL CE有了很大的差别。2. LINQ to SQL 在Windows phone中,LINQ to SQL既不能直...
阅读全文
摘要:当批评家指出微软的Silverlight缺乏Linux支持之后,国外的粉丝推出Linux/Unix版本下的"Silverlight" --Moonlight。不过这项有Miguel de Icaza推出的Mono工程似乎已经关闭。近日Mono项目负责人称:“我们将停止Monolight的更新”“我们不再相信Silverlight技术,因为在使用中有太多的局限性导致了发展的瓶颈。” 还有另外一个原因就是Silverlight目前并没有被大多数网站所接受,未来也不可能成为“必不可少”的一项技术,所以我们不得不做出改变。他说:“微软目前在Silverlight上添加了太多的限制条
阅读全文
摘要:http://msdn.microsoft.com/zh-cn/library/cc838158(v=vs.95)SilverlightSilverlightMicrosoft Silverlight 是一个跨浏览器、跨平台的 .NET Framework 实现,用于生成 Web、桌面和 Windows Phone 的媒体体验和丰富交互式应用程序。本节中的文档适用于 Silverlight5 Beta、Silverlight4、Silverlight3 和 Silverlight for Windows Phone。 有关版本差异,请在使用类库主题或查找其它主题类型中版本特定的字节时检查“版本
阅读全文
摘要:关于Silverlight学习,国内的中文资料很少,李会军的《Silverlight的完美征程》、银光志《银光志:Silverlight 3.0开发详解与最佳实践》在国内还是有点名气的。我很久之前下了电子书看了下,要说我的读后感,可以毫不夸张的说---名不副其实! 写本文的目的不是书托,因为要推荐的书不是我写的,我没有任何经济利益,单纯从技术角度来讲,这点我觉得很客观。本文也没有诋毁国内这2本书的意思,只是个人的读后感,从单纯的一个读者来讲,你写的烂就是烂,不能坑害园子里的其他博友了~作为读者,发表一点自己的感受总是可以的吧~ 大家都热爱技术,但从技术的角度来讲,我推荐的这本书是:Pr...
阅读全文
摘要:今天是礼拜6,下雨,没有外出,闲暇就写一篇博文讲下如何在Winform中使用WPF控件。原有是我在百度上搜索相关信息无果,遂干脆动手自己实现。WPF控件的漂亮是Winform无法匹及的,本文主旨是在Winform工程中如何使用WPF控件。先看下效果,如下图:左边是传统的Winform控件,右边是DebugLZQ引入的WPF控件,我们可以很清楚的看到图片的“半透明”效果、TextBox的透明背景!界面很Cool吧~下面就介绍下,这个创新性工程的创建过程,并附上所有代码:首先,添加一个WPF自定义控件,控件的xaml很简单,代码如下:<Grid > <Image ...
阅读全文
摘要:欢迎使用 Windows Phone SDK 文档。本主题充当开发人员资源和文档的线路图。
阅读全文