摘要: 一个系统需要有多种语言时,我们就要写另一个语言资源了,怎么样来实现语言间的切换。 下面我们先新建两个语言资源: Zh-CN.xaml和en-us.xaml 在App.config中要配置所需要的语言 <appSettings> <add key="language" value="en-us"/> </appSettings> 用这种写法,当我们需要改成中文语言资源时,只要把en-us该成zh-c... 阅读全文
posted @ 2011-07-04 21:56 Lee's Blog 阅读(914) 评论(0) 推荐(0) 编辑
摘要: 在UIElement布局的时候,我们要知道父窗体或父控件要给子控件分配多少空间,换句话说子控件需要父控件提供多少空间给它。这些步骤在什么时候发生呢?这些过程来自UIElement的Measure 和Arrange,所以我们来重写这两个方法。看看里面到底做了些什么。父MeasureOverride 和ArrangeOverrideMeasure(测量),此方法实现:父元素从其自身的 MeasureCore 实现调用此方法以形成递归布局更新。其中Measure方法传入的参数是availableSize,这个availableSize是一个Size类型,表示的是父元素可以提供的大小。下面用实例来讲解 阅读全文
posted @ 2011-04-22 12:57 Lee's Blog 阅读(7596) 评论(2) 推荐(6) 编辑
摘要: 我们来实现一个最简单的实例HelloCaliburn。首先我们要引入下面几个.dllCaliburn.Core.dll Caliburn.Castle.dllCastle.MicroKernel.dllCaliburn.PresentationFramework.dll Microsoft.Practices.ServiceLocation.dll Castle.Windsor.dll 为了更好的了解Caliburn如何关联View和Presenter(业务逻辑层相当于ViewModel)。我们用了MVVM模式。如下图:配置Caliburn容器在App.xaml中,我们要修改框架名称代码< 阅读全文
posted @ 2011-03-29 10:22 Lee's Blog 阅读(2468) 评论(3) 推荐(1) 编辑
摘要: 前面我们触发事件的行为用的是普通的EventMessageTrigger 。其实在Caliburn中有三种事件触发模式:EventMessageTrigger GestureMessageTrigger AttachedEventMessageTrigger 1.EventMessageTrigger 简写:cal:Message.Attach="Divide(left.Text, right.Text) : DivideResult.Text"详细:<cal:Message.Triggers> <cal:RoutedMessageTriggerColle 阅读全文
posted @ 2011-03-18 08:35 Lee's Blog 阅读(1923) 评论(0) 推荐(0) 编辑
摘要: CaliburnApplication配置一:在前面,我们配置Caliburn容器时,是在App.xaml.cs中加了下面段代码:CaliburnFramework .ConfigureCore() .WithPresentationFramework() .Start();配置二:还有一种配置,使用Caliburn基类来配置,要修改的地方有App.xaml.cs和App.xamlpublic partial class App : CaliburnApplication{ public App() { InitializeComponent(); }}<cal:CaliburnAppl 阅读全文
posted @ 2011-03-18 08:34 Lee's Blog 阅读(1212) 评论(2) 推荐(0) 编辑
摘要: 首先解决上一篇博客未解决的问题。上次博客中还有一种命令(BoundCommad)没讲到。命令源还是不变的。变得是:我们对命令源封装成属性:命令源ShowMessageCommand:代码public class ShowMessageCommand { [Preview("CanExecute")] public void Execute(string message) { MessageBox.Show(message); } public bool CanExecute(string message) { return !string.IsNullOrEmpty(mes 阅读全文
posted @ 2011-03-15 08:52 Lee's Blog 阅读(1047) 评论(0) 推荐(0) 编辑
摘要: 前言:我们知道WPF也有Command,比如自带的复制、粘贴、剪切、撤销等。这里要说的是Caliburn中的Command,它们有什么区别和不同点呢?1、命令源我们首先创建一个ShowMessageCommand.cs类,和ShowTitleMessageCommand.cs类。分别写上相应的命令方法。 [Command] public class ShowMessageCommand { [Preview("CanExecute")] public void Execute(string message) { MessageBox.Show(message); } pub 阅读全文
posted @ 2011-03-10 08:23 Lee's Blog 阅读(2573) 评论(0) 推荐(6) 编辑
摘要: 上次的笔记,主要讲的Action。这次讨论下Action的其他两个行为。AsyncActionAsyncAction(异步行为)基于上次的笔记内容,我们在此基础上加一个3秒的时间延迟 [Preview("CanDivide")] public int Divide(int left,int right) { Thread.Sleep(3000); return left / right; } public bool CanDivide(int left,int right) { return right != 0; }当我们输入数字,点button后,这时我们拖动窗体,发现 阅读全文
posted @ 2011-03-09 08:35 Lee's Blog 阅读(2242) 评论(0) 推荐(3) 编辑
摘要: 前言:这些内容都是在Caliburn 1.1版本基础上,学习的心得。其中有些不懂的地方或写错的地方请大家指正。基础在配置Caliburn时,我们先要添加3个引用,分别是:Caliburn.Core.dll Caliburn.PresentationFramework.dll Microsoft.Practices.ServiceLocation.dll Caliburn不止这两个引用,要用到的时候,再提出。要想使用Caliburn来写事件,首先要在App.xaml.cs中配置它。打开App.xaml.cs public App() { CaliburnFramework.ConfigureCo 阅读全文
posted @ 2011-03-08 17:20 Lee's Blog 阅读(6190) 评论(3) 推荐(4) 编辑
摘要: 这是WPF最后一节,3D动画,用一个字来描述它“炫”,今天我们来揭秘它到底是何物。 首先我们来介绍下三维坐标空间和二维坐标空间的区别: 在3D动画中,要画一个3D模型,必须要有 1、照相机 2、光源 一、照相机 照相机相当于观察位置(你是从那个位置看的) 了解三维场景如何在二维图面上表示的另一种方法就是将场景描述为到观察表面上的投影。 有两种Camera: 1、ProjectionCamera 2... 阅读全文
posted @ 2011-02-28 09:16 Lee's Blog 阅读(6539) 评论(1) 推荐(0) 编辑
摘要: XPS介绍:XPS文档和Word文档差不多,它提供打印功能。可以以浏览器的方式打开。 下面我们以一个实例来了解XPS。 首先打开vs,新建一个WPF项目。 在界面上拖入一个DocumentViewer控件和一个Button控件。 DocumentViewer 控件用于以已分页格式查看 FixedDocument 内容(例如,XML 纸张规范 (XPS) 文档) 现在要实现点Button,加载xp... 阅读全文
posted @ 2011-02-28 09:06 Lee's Blog 阅读(1645) 评论(6) 推荐(0) 编辑
摘要: 上次介绍了数据绑定到ListBox上,今天我们把数据绑定到TreeView,和Menu上。其实不同点在于DataTemplate。这次不是用DataTemplate了,而是用HierarchicalDataTemplate 这是分层的数据模板,Hierarchical是分层的意思。DataTemplate是数据模板。这样记容易记住吧。 我们还是用上次的数据。 我们来看.xaml [代码]这里不要忘... 阅读全文
posted @ 2011-02-11 09:14 Lee's Blog 阅读(1761) 评论(0) 推荐(0) 编辑
摘要: 上次讲到数据模板的绑定(DataTemplate),今天在这基础上我进行了延伸。下面我们把数据绑定到ObjectDataProvider上。ObjectDataProvider:包装和创建可以用作绑定源的对象。 首先我们先设定一些数据。 先看下结果图吧。 新建一个Data.cs类。 我们在里面新建6个类,看类图吧。 这里League是哪个国家的队,Division是这个国家队有哪些地方队组成,... 阅读全文
posted @ 2011-02-11 09:13 Lee's Blog 阅读(1423) 评论(2) 推荐(0) 编辑
摘要: 绑定资源模板 上一节我们了解到绑定的方式,下面我们来了解下资源模板的绑定。 我们先定义一个Person类(Person.cs),比如他有PersonName属性,可以实现变更通知。(Person.cs) [代码]我们给它一些 静态的数据。首先我们新建一个.cs文件叫 Datas.cs吧。里面是:[代码]后台都准备好了,我们就开始前台吧。先在xaml中添加 xmlns:local="clr-name... 阅读全文
posted @ 2011-02-01 08:37 Lee's Blog 阅读(930) 评论(1) 推荐(0) 编辑
摘要: WPF之绑定 绑定在WPF中是一个重点,也是难点。下面我们通过例子来简单讲讲绑定。 我们先画一个椭圆,用椭圆的宽来绑定Slider控件的Value。通常,每个绑定都具有四个组件:绑定目标对象、目标属性、绑定源,以及要使用的绑定源中的值的路径。这里绑定目标是ellipse1,目标属性是Width,绑定源是slider1,源属性是Value。运行看效果: 还有双向、单项绑定等。看下图。有图有真相。 O... 阅读全文
posted @ 2011-01-24 08:24 Lee's Blog 阅读(1169) 评论(1) 推荐(0) 编辑