Freezable.GetCurrentValueAsFrozenCore(Freezable) 方法


使当前实例成为指定 Freezable 的冻结克隆。Makes the current instance a frozen clone of the specified Freezable. 如果对象具有动画依赖属性,则复制其当前的动画值。If the object has animated dependency properties, their current animated values are copied.

 virtual void GetCurrentValueAsFrozenCore(System::Windows::Freezable ^ sourceFreezable);
protected virtual void GetCurrentValueAsFrozenCore (System.Windows.Freezable sourceFreezable);
abstract member GetCurrentValueAsFrozenCore : System.Windows.Freezable -> unit
override this.GetCurrentValueAsFrozenCore : System.Windows.Freezable -> unit
Protected Overridable Sub GetCurrentValueAsFrozenCore (sourceFreezable As Freezable)



要复制和冻结的 FreezableThe Freezable to copy and freeze.


此方法由方法调用, GetCurrentValueAsFrozen 不应在代码中直接调用,除非在重写此方法时调用基实现。This method is called by the GetCurrentValueAsFrozen method and should not be called directly from your code, except when calling the base implementation while overriding this method. 若要创建当前对象的冻结副本,请调用, GetCurrentValueAsFrozen 而不是直接调用此方法。To create a frozen copy of the current object, call GetCurrentValueAsFrozen instead of calling this method directly.


如果是从派生的 Freezable ,则可能需要重写此方法。If you derive from Freezable, you may need to override this method. 重写的原因包括:Reasons to override include the following: -派生类具有未通过依赖属性公开的数据。- Your derived class has data that is not exposed via dependency properties.

-派生类必须执行额外的初始化工作,而不能通过简单地重写来完成此操作 CreateInstanceCore()- Your derived class must perform extra initialization work that cannot be accomplished by simply overriding CreateInstanceCore(). 例如,如果您的派生类实现了,则这种情况适用 ISupportInitializeFor example, this applies if your derived class implements ISupportInitialize.

将其所有数据存储在依赖属性中并且无需执行额外的初始化工作的类不需要重写 GetCurrentValueAsFrozenCore(Freezable)Classes that store all their data in dependency properties and that do not need to perform extra initialization work do not need to override GetCurrentValueAsFrozenCore(Freezable).

所有实现都必须调用此方法的基实现,这一点非常重要。It is essential that all implementations call the base implementation of this method. 实现仅应执行默认实现不执行的工作。Implementations should only perform work that is not performed by the default implementation. 默认实现使用方法创建一个新的, Freezable CreateInstance() 并为其包含的所有其他可写的本地设置的属性生成未冻结的可冻结对象和浅层副本的深层副本。The default implementation creates a new Freezable using the CreateInstance() method and makes deep copies of unfrozen freezables and shallow copies of all other writable, locally set properties it contains. 如果对象具有数据绑定依赖项属性,则会复制数据绑定,但这些绑定可能不再解析;有关克隆数据绑定对象的详细信息,请参阅 冻结对象概述If the object has data-bound dependency properties, the data bindings are copied but might no longer resolve; for more information about cloning data-bound objects, see Freezable Objects Overview. 如果对象具有动画依赖属性,则会复制这些属性的当前动画值,但不会复制动画。If the object has animated dependency properties, the current animated value of those properties is copied, but the animations are not.

Freezable此默认实现不会复制中的只读依赖项属性。Read-only dependency properties within a Freezable are not copied by this default implementation.

如果重写此方法,则必须调用基实现。If you do override this method, you must call the base implementation.

不需要在 Freeze() 复制值时进行值。You do not need to Freeze() values as they are copied. 在返回前,结果会被冻结 GetAsFrozen()The result is frozen by GetAsFrozen() before being returned.