#147 – Use SetCurrentValue When You Want to Set A Dependency Property Value from Within a Control

使用SetCurrentValue 方法在控件内部设置依赖属性的值 当你写一个控件的时候,你可能会想设置控件自己拥有的依赖属性的值。举个例子,一个数字递增递减的控件通过点击箭头按钮改变数字的值。 但是问题是直接设置本地属性值,会覆盖其他来源对属性值的改变,比如绑定。如果直接设置本地属性,该属性上...

2016-06-30 11:13:04

阅读数:284

评论数:0

#146 – Use GetValueSource Method to Find the Source of a Dependency Property Value

使用GetValueSource 方法获得依赖属性值的来源 有时候能够确定依赖属性当前值的来源是非常有用的。你可以使用DependencyPropertyHelper.GetValueSource 方法实现。 在下面的例子中,Foreground 属性的值可以来自样式或者样式里定义的基于的IsE...

2016-06-30 09:51:56

阅读数:198

评论数:0

#131 – Dependency Properties Inherit Values from Higher Up in the Logical Tree(逻辑树中元素的依赖属性可从其上层元素继承)

依赖属性的值可以有很多不同的来源,比较常见的一种是从其逻辑树的更上层继承而来。 这意味着当我们在XAML或者代码中设置一个依赖属性的值的时候,这个值会沿着逻辑树向下传递给其他同样拥有这个依赖属性的元素。 下面是个例子。有若干个控件的FontStyle 属性值继承自最高级的Window 元素。

2016-06-29 09:45:20

阅读数:322

评论数:0

#128 – Using Code Snippets to Implement a Dependency Property(用代码段实现依赖属性)

用代码段实现依赖属性 Visual Studio 2010有一个很方便在类中实现依赖属性的功能——插入代码段。 首先,在代码编辑页面中空白行中点击鼠标右键,选中“插入代码段” 选中NetFX30

2016-06-28 14:29:14

阅读数:307

评论数:0

#123 – Coercing a Dependency Property(强制转换依赖属性的值)

在一个类中使用依赖属性的时候,可以选择在注册该依赖属性的时候指定一个强制转换回调函数(coercion callback)。当属性将要返回一个属性值的时候该回调函数被调用。通过强制转换回调函数可以强制改变依赖属性的值。 在注册依赖属性的时候,通过CoerceValueCallback 委托指定强...

2016-06-28 11:10:08

阅读数:222

评论数:0

#122 – Validating a Dependency Property(验证依赖属性)

在某个类中使用依赖属性的时候,可以选择在是否注册依赖属性的时候指定一个验证回调函数(validation callback)。如果指定了验证毁掉函数,当为该依赖属性的设置一新的值的时候,这个回调函数会被调用并返回true或者false以表示新设置的值是否有效。 在注册依赖属性的时候指定回调函数。

2016-06-28 10:34:51

阅读数:287

评论数:0

#121 – Being Notified When the Value of a Dependency Property Changes(属性值改变通知)

一个应用了依赖属性的类可以选择当属性值发生改变的时候发出通知。要实现通知,该类在注册属性的时候要指定一个PropertyChangedCallback

2016-06-27 11:22:42

阅读数:193

评论数:0

#120 – Clearing a Dependency Property Value(清除依赖属性的值)

我们可以在代码或者XAML中设置依赖属性的值,并且本地值会覆盖继承而来的值或者默认值。 同样也可以使用DependencyObject.ClearValue 方法清除属性值。这样会使本地属性值失效,依赖属性的值将会恢复为继承而来的值或者默认值。(属性值可以有多个来源)

2016-06-27 10:35:08

阅读数:212

评论数:0

#118 – Don’t Add Code to Dependency Property Getter/Setter(不要在依赖属性的Getter/Setter中加入处理代码)

当我们使用自定义的依赖属性的时候,一般通过getter/setter 方法包裹DependencyObject.GetValue 和DependencyObject.SetValue 来使用。这样可以让依赖属性像一般的公共语言运行库(CLR)属性一样被使用,下面是一个例子:

2016-06-27 09:53:20

阅读数:466

评论数:0

#117 – Registering a Dependency Property(注册一个依赖属性)

为了使用依赖属性,要在使用的类中创建一个DependencyProperty 类的静态实例。之所以创建静态的实例是因为在DependencyProperty 类中仅仅只是描述这个依赖属性,而并没有真正的存储这个依赖属性的值。 你可以

2016-06-23 17:28:43

阅读数:310

评论数:0

#116 – Dependency Property Values Are Stored in the DependencyObject(依赖属性存储在DependencyObject中)

标准的CLR属性值是存储在定义该属性的实例中的,即使这个属性自创建以后从来没有被复制或者更改,它依然会占用内存空间。 而依赖属性的值只有被设置为非默认值的时候才会被存储(值不占用内存空间),而当访问没有设置值的依赖属性将会只返回一个默认的值。

2016-06-21 18:13:05

阅读数:192

评论数:0

#114 – How Dependency Properties Are Implemented(依赖属性是如何应用的)

在WPF中,依赖属性可以当做一般CLR属性一样使用,但是它实际应用起来却完全不一样。它增加了许多复杂的功能处理数据绑定、属性继承和属性更改通知。 一个想要应用依赖属性的类必须继承自DependencyObject,DependencyObject 类支持读写依赖属性。

2016-06-21 17:51:03

阅读数:272

评论数:0

#112 – Navigating the Visual Tree in Code(在后台代码中导航可视树)

你可以用  VisualTreeHelper.GetChildrenCount 和GetChild 方法枚举可视树中所有的元素。 你可以用下面的循环获得某个父级元素下面所有的可视树子元素: for (int i = 0; i < VisualTreeHelper.GetChildren...

2016-06-20 18:06:34

阅读数:242

评论数:0

#111 – The Visual Tree(可视树)

WPF中的可视树是将逻辑树分解为最原始的可视元素。逻辑树中的元素一般都是控件,但是可视树中确实显示控件的基础可视元素。可视树中所有的元素都源自于 Visual o或者Visual3D。 举个例子,下面是一个XAML的可视树

2016-06-17 15:36:28

阅读数:198

评论数:0

#108 – The Logical Tree(逻辑树)

在WPF中,逻辑树表示组成UI的元素的层级关系。如果UI在XAML中定义,逻辑树可以看做是由一组XAML元素通过 父/子 关系组成的树。 逻辑树同样可以被认为是一种描述运行环境中哥哥元素间关系的模型。了解逻辑树可以帮助理解以下内容: -资源查找 -属性继承 -事件路由

2016-06-16 10:16:44

阅读数:231

评论数:0

#106 – Set Property Value to Point to Another Object(设置属性值指向另一个object)

有时候在XAML中需要设置当前元素某个属性指向另外一个元素。 比如CommandTarget 属性,它被用来判断当前控件是否是command的发起者。

2016-06-16 09:48:53

阅读数:170

评论数:0

#100 – Loose XAML Files(松散XAML文件)

松散XAML文件是指不和后台代码有关联并且不会变应用程序编译的XAML。一个松散的XAML文件可以被IE浏览器加载并显示出其界面。 下面是一些关于松散XAML的规则:   -最高级的根元素不能是Window,但可以是Page或者其他GUI元素(例如StackPan

2016-06-14 14:11:46

阅读数:393

评论数:0

#98 – How Attached Properties Work in WPF(附加属性在WPF中如何工作)

在XAML中,附加属性允许给并不是定义该属性的类型的实例附加一个属性值。(例如Grid.Row 属性可以设置给Button)。 当XAML解析器遇到附加属性的时候,它会调用定义属性的类的静态方法获取或者设置附加属性的值

2016-06-13 17:46:19

阅读数:168

评论数:0

#95 – x:Name vs. Name

从基类中继承了Name 属性的元素可以使用Name 属性。但是继承自没有定义Name 属性的类的元素,如果想在后台代码中被引用,必须使用x:Name 属性。 通常,这Name and x:Name 可以互换,前者是一个类的真实属性,后者是x: 命名空间中一个通过XAML语法解析器转换使用的指令。...

2016-06-13 14:05:49

阅读数:332

评论数:0

#90 – 单步调试VS2010自带的源码(Stepping Into .NET Source Code in Visual Studio 2010)

有的时候能够在调试器中单步调试VS2010自带类.NET库的源码如果工作,而不是仅仅只查看元数据,是非常有帮助的。

2016-06-12 16:04:19

阅读数:1374

评论数:0

提示
确定要删除当前文章?
取消 删除
关闭
关闭