Freezable.CloneCore(Freezable) Method


使用基(未经过动画处理的)属性值使该实例成为指定 Freezable 的克隆(深层复制)。Makes the instance a clone (deep copy) of the specified Freezable using base (non-animated) property values.

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



要克隆的对象。The object to clone.


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

Notes to Inheritors

如果是从 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(). 例如,如果派生类实现 ISupportInitialize,则适用。For example, this applies if your derived class implements ISupportInitialize.

将其所有数据存储在依赖属性中并且无需执行额外的初始化工作的类不需要重写 CloneCore(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 CloneCore(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. 默认实现生成所有可写的本地设置的属性(包括内部表达式)的深层副本。The default implementation makes deep copies of all writable, locally set properties, including internal expressions.

如果对象具有数据绑定依赖项属性,则会复制表达式,但不能再解析表达式。If the object has data-bound dependency properties, the expressions 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 base (non-animated) value of those properties is copied. 不复制动画。Animations are not copied.

请注意,不会复制未设置的属性,也不会为只读属性。Note that unset properties are not copied, nor are read-only properties. 如果此类属性具有默认值,该默认值为已冻结的 Freezable,则该属性值在其他可修改复本中保持为冻结状态。If such a property has a default value that is a frozen Freezable, that property value remains frozen in the otherwise modifiable clone.

下面的列表汇总了此方法的预期行为:The following list summarizes the expected behavior for this method: -生成的副本包含所有 Freezable 子对象的副本。- The copy produced contains copies of all Freezable sub-objects.

-不会复制-Unset 和只读属性。- Unset and read-only properties are not copied.

-复制表达式。- Expressions are copied.

-在创建时这些子对象均不会被冻结。- None of these sub-objects are frozen on creation.

-副本本身未冻结。- The copy itself is not frozen.

-不复制动画。- Animations are not copied.

-仅复制属性基准值,而不复制当前动画值。- Only property base values are copied, not current animated values.

Applies to

See also