随笔分类 -  WPF

摘要:一直计划的几个WPF控件,实施时间也很长了,由于时间关系一直没有做完。但是不知道什么时候才能做完,现在放出来,有兴趣的可以自己拿去看看(包括源代码),其中Ribbon(模拟Win7)的部分完成了基本框架。需要了解VISTA RIBBON的朋友可以去WPFSDK的博客翻。 阅读全文
posted @ 2009-06-15 15:08 赖仪灵 阅读(5207) 评论(12) 推荐(2) 编辑
摘要:由于WPF应用程序中XAML代码在很多时候是运行时加载处理的。比如DynamicResource,但是在编译或者运行的过程中,编写的XAML代码很可能有错误,此时XAML代码解析器通常会抛出称为XamlParseException的异常。但是抛出的XamlParseException异常提供的信息非常简单,或者是很不准确。此时我们关于通过对变通的方法来获取更多的异常信息。 阅读全文
posted @ 2007-05-28 12:27 赖仪灵 阅读(5276) 评论(16) 推荐(1) 编辑
摘要:在前一个Post当中,指出了在WPF的WindowInteropHelper类中的一个BUG:通过WindowInteropHelper的Owner属性不能实现把WPF窗口的Owner属性设置为一个非WPF窗口的句柄。在我的Post帖出后不到一天,在WPF SDK的Blog上,就针对这个BUG给出了一个非常完美的解决方案。既然不同通过设置WindowStartupLocation.CenterOwner来改变窗口的位置。那么我们就用WindowStartupLocation.Manual来手动计算设置窗口的位置。 阅读全文
posted @ 2007-05-15 09:21 赖仪灵 阅读(6700) 评论(4) 推荐(1) 编辑
摘要:在Windows SDK中关于WindowInteropHelper类的介绍中,关于其Owner属性的说明和实现有些问题。原文是:An example scenario is if you need to host a WPF dialog box in a Win32 application. Initialize the WindowInteropHelper with a WPF windo... 阅读全文
posted @ 2007-04-03 12:16 赖仪灵 阅读(3366) 评论(2) 推荐(1) 编辑
摘要:WPF全景体验2007年1月30日,Windows Vista正式全球同步发布。此举标志着Windows Vista已经旋风般地吹向了整个网络世界。比尔盖茨预言:只需要三分钟时间就能让用户接受Windows Vista。但是,微软如何才能做到这一点呢?其中最关键的一点就是Windows Presentation Foundation(WPF),她依赖于WPF所带来的震撼视觉效果和用户体验。请在这里... 阅读全文
posted @ 2007-03-07 17:14 赖仪灵 阅读(8443) 评论(16) 推荐(1) 编辑
摘要:开发人员在应用程序中使用Windows Presentation Foundation来构建大量的3D控件、包含3D场景时,常常会遇到如何优化其性能的问题。WPF 3D组的几个成员提供了一个影响应用程序性能的3D类和属性的列表。当我们使用她们来优化应用程序性能时应该遵从这些建议。本随笔假定你深刻的理解了WPF 3D API。不熟悉这些API的用户在使用这些建议之前应该首先阅读WPF SDK文档。本随笔中提出的建议只适用于“Tier-2”的视频硬件(通常是指支持象素Shader 2.0和顶点Shader 2.0的硬件)。为了简洁,本随笔进行适当的总结,因此真正理解掌握她们并不简单。 阅读全文
posted @ 2007-02-09 09:02 赖仪灵 阅读(6590) 评论(7) 推荐(0) 编辑
摘要:在建立漂亮UI的同时,我们还需要关注应用程序的性能,WPF尤其如此。下面从MS的文档中总结出了一些有用的性能优化点。在实际编写的过程中,可以参考。这个Post非原创,是根据一些文档总结出来的。 阅读全文
posted @ 2007-01-19 13:33 赖仪灵 阅读(9261) 评论(13) 推荐(3) 编辑
摘要:在实际应用中,ControlTemplate是一个非常重要的功能。它帮助我们快速实现很Cool的自定义控件。下面我以Windows Vista SDK中的例子ControlTemplateExamples为基础,简单地分析ControlTemplate的使用。这个例子工程非常丰富,几乎包含了所有的标准控件。所以,在实现自定义控件时,可以先参考这样进行适当的学习研究。 阅读全文
posted @ 2007-01-18 15:44 赖仪灵 阅读(6434) 评论(4) 推荐(3) 编辑
摘要:通过前面的介绍,我们已经知道WPF支持用Style Setters修改控件的属性值,以改变控件的外观。我们知道,WPF的任何控件都有视觉树和逻辑树。但是Style有它自己的局限性:它只能修改控件已有树型结构的属性,不能修改控件的树型层次结构本身。而在实际运用中,我们常常需要对控件进行更高级的自定义。此时,可以需要使用ControlTemplate才能实现。 阅读全文
posted @ 2007-01-15 17:06 赖仪灵 阅读(8652) 评论(1) 推荐(4) 编辑
摘要:Style是一种修改属性值是方法。我们可以将其理解为对属性值的“批处理”。对“批处理”大家应该不会感到默认。对,通过Style我们可以批量修改属性的值。 阅读全文
posted @ 2007-01-12 22:17 赖仪灵 阅读(6731) 评论(8) 推荐(3) 编辑
摘要:最近比较忙些,好多天没有写WPF了。今天,我们继续回到前面的话题:WPF中的数据处理。前面讲过,通过实现INotifyPropertyChanged,我们可以改变使任意的CLR对象支持WPF的绑定源。但是,INotifyPropertyChanged通常只应用在单个的类属性上。在现实应用中,我们还会遇到另外一种情况:我们需要监视某一堆的数据是否发生变化。也就是说我们绑定的数据源不再是一个单独数据对象。比如,绑定源是一个数据表时,我们希望在表中任何一条数据发生变化就能得到通知。 阅读全文
posted @ 2007-01-10 14:39 赖仪灵 阅读(5082) 评论(4) 推荐(1) 编辑
摘要:前一个Post当中介绍了WPF如何处理事件的传递过程。如何定义传递事件,并且对事件进行了分类。现在,我们看看WPF到底是如何处理Bubbling和Tunneling事件的。最后介绍了Attached事件。 阅读全文
posted @ 2007-01-07 15:49 赖仪灵 阅读(5422) 评论(5) 推荐(4) 编辑
摘要:WPF在.NET简单事件通知之上添加了很多基础结构。传递事件的设计使得事件可以与元素树一起很好的工作。事件发生后,可以在视觉树和逻辑树自动地进行上下传递,我们不需要添加任何额外的代码。传递事件使得我们不需要过多关注于视觉树,这样封装对于我们理解WPF的元素合成非常重要。比如,我们点击一个按钮的事件,在点击的时候我们实际上点击的是一个ButtonChrome或者TextBlock,也就是说我们点击的是Button的内容元素。正是因为事件可以沿视觉树传递,Button才发现这个事件,并且可以处理。因此,我们可以给Button的Content当中添加任意的元素,而不会对事件有任何的影响。如果没有这样的事件传递,我们点击Button内的元素时,必须手动编写代码触发Button点击事件。 阅读全文
posted @ 2007-01-03 14:06 赖仪灵 阅读(9263) 评论(15) 推荐(2) 编辑
摘要:在前一个Post当中,我从资源编译行为的角度讨论了WPF中的资源。但是,不管是Resource还是Content都是在编译时声明资源。如果我们打破这个限制,不希望指定完全确认的资源地址。WPF提供了一种类似IE地址定位的抽象,它根据应用程序部署的位置决议。 阅读全文
posted @ 2007-01-02 21:44 赖仪灵 阅读(5030) 评论(1) 推荐(1) 编辑
摘要:继续相同的话题:WPF中的资源。这次我将尝试从另外一个角度来分析WPF中的资源:资源编译行为,以及如何根据应用程序的需要选择适当的类型。 阅读全文
posted @ 2006-12-31 23:01 赖仪灵 阅读(5803) 评论(1) 推荐(3) 编辑
摘要:在本系列的之十三中简单介绍了WPF中资源的资源。但是,没有给出任何具体的实例,在这个Post中将给出一个动态资源的例子,也算是响应daxian110的请求。并适当的扩展在前一个Post当中没有涉及的知识。 阅读全文
posted @ 2006-12-30 21:00 赖仪灵 阅读(5303) 评论(12) 推荐(3) 编辑
摘要:在上一个Post当中,我叙述了WPF中的数据绑定相关的一堆理论知识。现在,我们将对其中的某些方面通过实例做进一步的分析。在介绍WPF数据绑定源的种类时,第一种就是任意的CLR对象。这里需要注意的是WPF虽然支持任意的CLR对象,但是一个普通的CLR对象类却不行。我们还需要在CLR对象类上实现一种变化通知机制。WPF把这种通知机制封装在了INotifyPropertyChanged接口当中。我们的CLR对象类只要实现了这个接口,它就具有了通知客户的能力,通常是在属性改变后通知绑定的目标。 阅读全文
posted @ 2006-12-29 10:14 赖仪灵 阅读(5575) 评论(9) 推荐(3) 编辑
摘要:数据绑定,这是WPF提供的一个真正的优点。除了可以用在传统的绑定环境中,数据绑定已经被扩展应用到控件属性上。学习应用数据绑定,也能真正的体现XAML的好处。到底什么是数据绑定呢?也许你从字面上已经理解的很不错了。通过数据绑定,我们在应用程序UI和程序逻辑之间建立了一种联系。正常建立绑定后,在数据的值发生改变后,绑定到数据的元素将自动更新、体现出数据的变化。 阅读全文
posted @ 2006-12-28 22:10 赖仪灵 阅读(6565) 评论(2) 推荐(3) 编辑
摘要:资源是保存在可执行文件中的一种不可执行数据。通过资源我们可以包含图像、字符串等等几乎是任意类型的数据。如此重要的功能,.NET、WPF当然都支持,而且WPF的资源有所不同。今天,我将简单说明如何在WPF中使用资源。 阅读全文
posted @ 2006-12-27 22:42 赖仪灵 阅读(7683) 评论(11) 推荐(4) 编辑
摘要:在前面,我用三篇短小的Post对Dependency属性进行了说明。现在,我们再继续看一种特殊的Dependency属性:Attached属性。Attached属性可以非常高效地Attach到其他的对象中。 阅读全文
posted @ 2006-12-26 09:41 赖仪灵 阅读(5261) 评论(5) 推荐(3) 编辑