我已经尝试了MSDN,但是没有一个继承自Freezable的示例。
更新:
是的,在MSDN中有一个动画示例,但它太复杂了,需要一些更简单的东西来理解Freezable。
在Freezable类的MSDN文档中,在Remarks部分中,可以找到以下段落:
有关使用和创建自己的Freezable对象的信息,请参见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();
}
}
就是这样。从Freezable
继承的代码确保Freeze()
或Clone()
等Freezable
方法按照预期工作。