如何创建自己的Freezable类?

Ere*_*rez 5 wpf freezable

我已经尝试过MSDN但是没有从Freezable派生的例子.

更新:

在MSDN中是的,有一个动画示例,但它太复杂了.需要更简单的东西来理解freezable.

Hei*_*nzi 13

文档

Freezable类MSDN文档中,在" 备注"部分中,您可以找到以下段落:

有关使用和创建自己的Freezable对象的信息,请参阅Freezable对象概述.

本概述包含创建自己的可冻结类的部分,其中包含您要执行的操作的理论背景.要查找示例,请按照该部分底部的链接进行操作:

有关自定义Freezable类的示例,请参阅自定义动画示例.


由于您特别要求一个简单的示例,这里有一个(改编自Freezable.CreateInstanceCoreMSDN页面).请记住理论页面中的以下句子:

每个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()工作完全按预期.