- 博客(11)
- 资源 (7)
- 收藏
- 关注
翻译 #173 – 可以将将Freezable类型的(You Can Put Freezable Objects Into a Read-Only State)
继承自Freezable 的类一般有读/写两种状态,但是他们可以很明确的通过其Freeze 方法冻结并被设置为只读状态。在WPF中,被冻结的类执行起来会更有效率,因为他们不需要在其属性值改变的时候做属性通知。例如WPF中绘图相关的Brush和3D图形,它们继承自 Freezable. 他们初始的状态是未冻结的,因它们的任何一个改变都会引起属性改变的通知。如果你有一个继承自 Freezable的实例,但是你并不想改变它,你可以使用Freeze 将之冻结。
2016-07-30 14:36:52 584
翻译 #167 – Implementing a Dependency Property That Is A Collection(实现一个Collection类型的依赖属性)
当你创建一个Collection类型的依赖属性的时候,你需要创建一个新的Collection类型的实例作为该属性的默认值,而不仅是一个静态的值。例如,我们定义一个Person.IQ 的依赖属性,默认值是100,
2016-07-20 11:13:41 315
翻译 #163 – Constructing FrameworkPropertyMetadata(构造FrameworkPropertyMetadata)
当你查看一个将自己的元数据存储在FrameworkPropertyMetadata实例中的依赖属性的元数据的时候,你可以看到下面这些bool类型的属性。在你构造FrameworkPropertyMetadata实例的时候,你不需要为所有这些bool类型的属性单独赋值。构造函数支持通过一些列枚举的逻辑或作为参数。而枚举值是FrameworkPropertyMetadataOptions 类型的枚举。
2016-07-19 18:27:39 1075
翻译 #160 – Be Careful When Setting Dependency Property Values from a DependencyObject Constructor
在构造函数中为依赖属性赋值必须小心使用C#编码的时候,我们应当尽量避免在构造函数中调用虚函数。因为你的构造函数很有可能是通过子类调用的,而这个时候子类并没有完全初始化完成。如果子类中重写了在构造函数中被调用的虚函数,那么这个被重写的虚函数在构造函数中将不会被父类调用。
2016-07-16 13:16:24 301
翻译 #159 – Creating a Read-Only Dependency Property(创建一个只读的依赖属性)
创建一个只读的自定义依赖属性和创建一个标准的依赖属性稍有不同。主要体现在: -使用DependencyProperty.RegisterReadOnly 注册而不是Register -创建一个静态的DependencyPropertyKey 类型的拷贝,用来公开静态的DependencyProperty属性 -只实现对应的CLR属性的get方法
2016-07-15 15:29:52 838
翻译 #158 – When to Create a Custom Dependency Property(哪些情况要创建自定义依赖属性)
当你创建一个类,并未其创建属性的时候,你需要确定是否将它创建为完全的WPF依赖属性。如果某个属性是标准的CLR属性,而非依赖属性,你依然可以在XAML中设置它的值。但是在下面这些情况下,你可能需要自定义依赖属性:
2016-07-14 10:22:29 340
翻译 #155 – Implementing an Attached Dependency Property(如何实现附加属性)
当你需要实现一个在XAML使用的附加属性的时候,你可以使用 DependencyProperty.Register 函数,它的使用方法和Register函数一样。下面的例子中,我们打算注册一个附加属性 Person.AgeProperty
2016-07-07 09:35:55 354
翻译 #154 – Reusing an Existing Dependency Property in Your Class(重用依赖属性)
用DependencyProperty.Register 方法可以简单的使用依赖属性。同样,我们可以使用DependencyProperty.AddOwner 方法重用已经存在的依赖属性。当重用一个已经存在的依赖属性的时候,你可以选择会否在你的类中为它指定一个新的元数据。同样也需要定义GetValue/SetValue 来实现对属性的读取。
2016-07-05 10:14:59 391
翻译 #151 – Dependency Properties Remember Non-Coerced Values(依赖属性强制转换之前的值会被记住)
如果你给依赖属性设置了某个值,并且它被强制转换了。这个设置的原始值会被记住。当你移除强制转换的判断条件后,改原始值将会被作为属性值返回。假如我们有一个Person 类,它偶一个Age 依赖属性和一个SuperOld 属性。假定如果SuperOld 的值为true,Age 属性的值就会被强制转换为999。
2016-07-04 17:34:04 448
翻译 #150 – An Example of Using PropertyChanged and CoerceValue Callbacks(PropertyChanged和CoerceValue例子)
在使用依赖属性的时候,有的时候可能会遇到需要强制限定多个依赖属性之间的关系的情况,这个时候一般会用CoerceValueCallback 和PropertyChangedCallbacks 来实现。举个例子,假定我们有一个Person 类,有BirthYear(出生)、DeathYear(去世) 和MarriageYear(结婚) 三个属性。我们确定结婚时间必须在出生和去世之间,出生时间必须早
2016-07-01 10:55:56 536
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人