我已经尝试过MSDN,但没有从Freezable派生的示例。
更新:
是的,在MSDN中,有一个动画示例,但是它太复杂了。
需要更简单的东西来理解可卡住的。
最佳答案
文献资料
在MSDN documentation of the Freezable class的备注部分中,您可以找到以下段落:
该概述包含创建自己的可卡住类部分,其中包含您想做的事情的理论背景。要查找示例,请点击该部分底部的链接:
例子
因为您专门要求一个简单的示例,所以这里是一个示例(改自MSDN page of Freezable.CreateInstanceCore)。记住the theory page的以下句子:
假设我们制作了一个自定义类MySimpleColor
,该类具有一个 bool 属性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
继承的代码可确保Freezable
方法(例如Freeze()
或Clone()
)完全按预期工作。