Hei*_*nzi 13
在Freezable类的MSDN文档中,在" 备注"部分中,您可以找到以下段落:
有关使用和创建自己的Freezable对象的信息,请参阅Freezable对象概述.
本概述包含创建自己的可冻结类的部分,其中包含您要执行的操作的理论背景.要查找示例,请按照该部分底部的链接进行操作:
有关自定义Freezable类的示例,请参阅自定义动画示例.
由于您特别要求一个简单的示例,这里有一个(改编自Freezable.CreateInstanceCore的MSDN页面).请记住理论页面中的以下句子:
每个Freezable子类都必须覆盖CreateInstanceCore方法.如果您的类对其所有数据使用依赖项属性,那么您就完成了.
假设我们创建了一个自定义类MySimpleColor
,它只有一个布尔属性IsRed
.要使这个类Freezable,我们只需要覆盖CreateInstanceCore
:
public class MySimpleColor : Freezable
{
// Here are your properties
public static readonly DependencyProperty IsRedProperty =
DependencyProperty.Register("IsRed", typeof(Boolean), typeof(MySimpleColor));
// CLR accessor of your property
public bool IsRed {
get { return (bool)GetValue(IsRedProperty); }
set { SetValue(IsRedProperty, value); }
}
// All that's needed to make this Freezable
protected override Freezable CreateInstanceCore() {
return new MySimpleColor();
}
}
Run Code Online (Sandbox Code Playgroud)
而已.从继承的代码Freezable
保证了Freezable
方法,例如Freeze()
或Clone()
工作完全按预期.