WPF

     摘要: 由于WPF应用程序中XAML代码在很多时候是运行时加载处理的。比如DynamicResource,但是在编译或者运行的过程中,编写的XAML代码很可能有错误,此时XAML代码解析器通常会抛出称为XamlParseException的异常。但是抛出的XamlParseException异常提供的信息非常简单,或者是很不准确。此时我们关于通过对变通的方法来获取更多的异常信息。  阅读全文
posted @ 2007-05-28 12:27 Yiling Lai 阅读(2873) | 评论 (18)  编辑
     摘要: 在前一个Post当中,指出了在WPF的WindowInteropHelper类中的一个BUG:通过WindowInteropHelper的Owner属性不能实现把WPF窗口的Owner属性设置为一个非WPF窗口的句柄。在我的Post帖出后不到一天,在WPF SDK的Blog上,就针对这个BUG给出了一个非常完美的解决方案。既然不同通过设置WindowStartupLocation.CenterOwner来改变窗口的位置。那么我们就用WindowStartupLocation.Manual来手动计算设置窗口的位置。   阅读全文
posted @ 2007-05-15 09:21 Yiling Lai 阅读(3034) | 评论 (5)  编辑
posted @ 2007-03-07 17:14 Yiling Lai 阅读(4900) | 评论 (15)  编辑
     摘要: 开发人员在应用程序中使用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 Yiling Lai 阅读(3523) | 评论 (7)  编辑
     摘要: 在建立漂亮UI的同时,我们还需要关注应用程序的性能,WPF尤其如此。下面从MS的文档中总结出了一些有用的性能优化点。在实际编写的过程中,可以参考。这个Post非原创,是根据一些文档总结出来的。  阅读全文
posted @ 2007-01-19 13:33 Yiling Lai 阅读(2894) | 评论 (11)  编辑
     摘要: 在实际应用中,ControlTemplate是一个非常重要的功能。它帮助我们快速实现很Cool的自定义控件。下面我以Windows Vista SDK中的例子ControlTemplateExamples为基础,简单地分析ControlTemplate的使用。这个例子工程非常丰富,几乎包含了所有的标准控件。所以,在实现自定义控件时,可以先参考这样进行适当的学习研究。  阅读全文
posted @ 2007-01-18 15:44 Yiling Lai 阅读(2919) | 评论 (4)  编辑
     摘要: 通过前面的介绍,我们已经知道WPF支持用Style Setters修改控件的属性值,以改变控件的外观。我们知道,WPF的任何控件都有视觉树和逻辑树。但是Style有它自己的局限性:它只能修改控件已有树型结构的属性,不能修改控件的树型层次结构本身。而在实际运用中,我们常常需要对控件进行更高级的自定义。此时,可以需要使用ControlTemplate才能实现。  阅读全文
posted @ 2007-01-15 17:06 Yiling Lai 阅读(3263) | 评论 (1)  编辑
     摘要: Style是一种修改属性值是方法。我们可以将其理解为对属性值的“批处理”。对“批处理”大家应该不会感到默认。对,通过Style我们可以批量修改属性的值。  阅读全文
posted @ 2007-01-12 22:17 Yiling Lai 阅读(3102) | 评论 (9)  编辑
     摘要: 最近比较忙些,好多天没有写WPF了。今天,我们继续回到前面的话题:WPF中的数据处理。前面讲过,通过实现INotifyPropertyChanged,我们可以改变使任意的CLR对象支持WPF的绑定源。但是,INotifyPropertyChanged通常只应用在单个的类属性上。在现实应用中,我们还会遇到另外一种情况:我们需要监视某一堆的数据是否发生变化。也就是说我们绑定的数据源不再是一个单独数据对象。比如,绑定源是一个数据表时,我们希望在表中任何一条数据发生变化就能得到通知。  阅读全文
posted @ 2007-01-10 14:39 Yiling Lai 阅读(2937) | 评论 (5)  编辑
     摘要: 前一个Post当中介绍了WPF如何处理事件的传递过程。如何定义传递事件,并且对事件进行了分类。现在,我们看看WPF到底是如何处理Bubbling和Tunneling事件的。最后介绍了Attached事件。  阅读全文
posted @ 2007-01-07 15:49 Yiling Lai 阅读(2763) | 评论 (6)  编辑
     摘要: WPF在.NET简单事件通知之上添加了很多基础结构。传递事件的设计使得事件可以与元素树一起很好的工作。事件发生后,可以在视觉树和逻辑树自动地进行上下传递,我们不需要添加任何额外的代码。传递事件使得我们不需要过多关注于视觉树,这样封装对于我们理解WPF的元素合成非常重要。比如,我们点击一个按钮的事件,在点击的时候我们实际上点击的是一个ButtonChrome或者TextBlock,也就是说我们点击的是Button的内容元素。正是因为事件可以沿视觉树传递,Button才发现这个事件,并且可以处理。因此,我们可以给Button的Content当中添加任意的元素,而不会对事件有任何的影响。如果没有这样的事件传递,我们点击Button内的元素时,必须手动编写代码触发Button点击事件。
  阅读全文
posted @ 2007-01-03 14:06 Yiling Lai 阅读(3566) | 评论 (16)  编辑
     摘要: 在前一个Post当中,我从资源编译行为的角度讨论了WPF中的资源。但是,不管是Resource还是Content都是在编译时声明资源。如果我们打破这个限制,不希望指定完全确认的资源地址。WPF提供了一种类似IE地址定位的抽象,它根据应用程序部署的位置决议。  阅读全文
posted @ 2007-01-02 21:44 Yiling Lai 阅读(2640) | 评论 (1)  编辑
     摘要: 继续相同的话题:WPF中的资源。这次我将尝试从另外一个角度来分析WPF中的资源:资源编译行为,以及如何根据应用程序的需要选择适当的类型。  阅读全文
posted @ 2006-12-31 23:01 Yiling Lai 阅读(2901) | 评论 (2)  编辑
     摘要: 在本系列的之十三中简单介绍了WPF中资源的资源。但是,没有给出任何具体的实例,在这个Post中将给出一个动态资源的例子,也算是响应daxian110的请求。并适当的扩展在前一个Post当中没有涉及的知识。  阅读全文
posted @ 2006-12-30 21:00 Yiling Lai 阅读(2736) | 评论 (11)  编辑

Full WPF Archive