焦林俊

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

随笔分类 -  WPF

摘要:说来惭愧,接触WPF这么长时间了,今天在写自定义控件时遇到一个问题:运行界面中并没有显示自定义控件,经调试发现原来没有加载Themes中的Generic.xaml。可是为什么在其他solution中可以成功显示呢?后来就google学习了一下WPF中加载资源的相关文档,但都是理论性的介绍。对这个问题还是没有多大的帮助。没有办法只能比较两个solution中的proj有什么不同,打开proj属性,发现application、build、buildEvents...等都一样,后来只能比较assemblyInfo,发现多了[assembly:ThemeInfo(................... 阅读全文
posted @ 2013-10-12 16:51 焦林俊 阅读(2586) 评论(0) 推荐(0)

摘要:做WPF的童鞋经常看到Dispatcher,而Dispatcher到底是什么呢?MSDN解释是“为一个线程提供管理任务队列的一个服务”。一个Dispatcher在一个指定线程中,维护了一个拥有优先级队列任务的队列。当一个Dispatcher在一个线程中被构造,那就成了唯一可以和线程交互的对象,即使该服务被关闭以后也是如此。如果想在当前的线程中得到与之交互的CurrentDispatcher,而Dispatcher又不在这个线程中,将一个Dispatcher将被创建。但如果Dispatcher被关闭了,它将不能被重启。在WPF里,一个DispatcherObject只能被和它相关的Dispatc 阅读全文
posted @ 2013-06-09 16:36 焦林俊 阅读(206) 评论(0) 推荐(0)

摘要:WPF中的画刷前面说过的,可以设置颜色的地方有,基本图形的边线Stroke, 填充Fill, 还有文字的颜色Foreground。当时都是直接设置成一个颜色值,如:, 这样就有了一个边线是蓝色的红色矩形。但实际上这些可以设置颜色的属性都是画刷类型的,只是当直接写成颜色值的时候,系统自动转换成了纯色画刷。就像下面这样: SliverLight中的画刷有以下几种:SolidColorBrush: 纯色画刷。主要属性有:Color。LinearGradientBrush: 线性渐变画... 阅读全文
posted @ 2012-06-26 13:44 焦林俊 阅读(4470) 评论(0) 推荐(1)

摘要:EventSetter 和 EventTrigger在样式中,可以通过使用 EventSetter 在标记中包括某个预先声明的 XAML 事件处理语法。在应用样式时,所引用的处理程序会添加到带样式的实例中。只能针对路由事件声明 EventSetter。下面是一个示例。请注意,此处引用的 b1SetColor 方法位于代码隐藏文件中。这样做的好处在于,样式有可能包含大量可应用于应用程序中任何按钮的其他信息,让 EventSetter 成为该样式的一部分甚至可以提高代码在标记级别的重用率。而且,EventSetter 还进一步从通用的应用程序和页面标记中提取处理程序方法的名称。另一个将 WPF 的 阅读全文
posted @ 2012-05-10 17:37 焦林俊 阅读(765) 评论(1) 推荐(0)

摘要:WPF 中的附加事件XAML 语言还定义了一个名为“附加事件”的特殊类型的事件。使用附加事件,可以将特定事件的处理程序添加到任意元素中。正在处理该事件的元素不必定义或继承附加事件,可能引发这个特定事件的对象和用来处理实例的目标也都不必将该事件定义为类成员或将其作为类成员来“拥有”。WPF 输入系统广泛地使用附加事件。但是,几乎所有的附加事件都是通过基本元素转发的。输入事件随后会显示为等效的、作为基本元素类成员的非附加路由事件。例如,通过针对该 UIElement 使用 MouseDown(而不是在 XAML 或代码中处理附加事件语法),可以针对任何给定的 UIElement 更方便地处理基础附 阅读全文
posted @ 2012-05-10 17:36 焦林俊 阅读(287) 评论(0) 推荐(0)

摘要:“已处理”概念所有的路由事件都共享一个公用的事件数据基类 RoutedEventArgs。RoutedEventArgs 定义了一个采用布尔值的 Handled 属性。Handled 属性的目的在于,允许路由中的任何事件处理程序通过将 Handled 的值设置为 true 来将路由事件标记为“已处理”。处理程序在路由路径上的某个元素处对共享事件数据进行处理之后,这些数据将再次报告给路由路径上的每个侦听器。Handled 的值影响路由事件在沿路由线路向远处传播时的报告或处理方式。在路由事件的事件数据中,如果 Handled 为 true,则通常不再为该特定事件实例调用负责在其他元素上侦听该路由事 阅读全文
posted @ 2012-05-10 17:35 焦林俊 阅读(325) 评论(0) 推荐(0)

摘要:本主题描述 Windows Presentation Foundation (WPF) 中路由事件的概念。本主题定义路由事件术语,描述路由事件如何通过元素树来路由,概述如何处理路由事件,并介绍如何创建您自己的自定义路由事件。先决条件本主题假设您对如下内容有基本的了解:公共语言运行库 (CLR)、面向对象的编程以及如何用树的概念来说明 WPF 元素之间的关系。为了按照本主题中的示例操作,您还应当了解可扩展应用程序标记语言 (XAML) 并知道如何编写非常基本的 WPF 应用程序或页。什么是路由事件?可以从功能或实现的角度来考虑路由事件。此处对这两种定义均进行了说明,因为用户当中有的认为前者更有用 阅读全文
posted @ 2012-05-10 17:34 焦林俊 阅读(288) 评论(0) 推荐(0)

摘要:路由事件处理程序和 XAML若要使用 XAML 为某个事件添加处理程序,请将该事件的名称声明为用作事件侦听器的元素上的属性。该属性的值是所实现的处理程序方法的名称,该方法必须存在于代码隐藏文件的分部类中。用来添加标准 CLR 事件处理程序的 XAML 语法与用来添加路由事件处理程序的语法相同,因为您实际上是在向下面具有路由事件实现的 CLR 事件包装中添加处理程序。路由策略路由事件使用以下三个路由策略之一:冒泡:针对事件源调用事件处理程序。路由事件随后会路由到后续的父元素,直到到达元素树的根。大多数路由事件都使用冒泡路由策略。冒泡路由事件通常用来报告来自不同控件或其他 UI 元素的输入或状态变 阅读全文
posted @ 2012-05-10 17:34 焦林俊 阅读(211) 评论(0) 推荐(0)

摘要:CLR属性我们非常熟悉了,在DotNet编程中随处可见。最简单最常见的属性访问器就是直接操纵类的私有成员,如下:public class Person{ private String _name; public string Name { get { return _name; } set { _name = value; } }}C#3.0对这种常见的写法提供了“自动属性”这一特性,方便了偶等这些懒惰的码农。public class Person{ public string Name { get; set; }}这两种写法是等价的,... 阅读全文
posted @ 2012-05-09 23:22 焦林俊 阅读(406) 评论(0) 推荐(0)