Freezable.CloneCore(Freezable) 方法

定义

使用基(未经过动画处理的)属性值使该实例成为指定 Freezable 的克隆(深层复制)。

protected:
 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)

参数

sourceFreezable
Freezable

要克隆的对象。

注解

此方法由 Clone 方法调用,不应直接从代码调用此方法,除非在重写此方法时调用基实现。 若要创建当前对象的可修改副本,请调用 Clone 而不是直接调用此方法。

继承者说明

如果派生自 Freezable,则可能需要重写此方法。 重写的原因包括:

  • 派生类具有未通过依赖属性公开的数据。

  • 派生类必须执行额外的初始化工作,而无法通过直接重写 CreateInstanceCore()来完成。 例如,如果派生类实现 ISupportInitialize,则此情况适用。

将所有数据存储在依赖属性中且不需要执行额外初始化工作的类不需要重写 CloneCore(Freezable)

所有实现必须调用此方法的基本实现。 实现应仅执行未由默认实现执行的工作。 默认实现会生成所有可写本地设置属性(包括内部表达式)的深层副本。

如果对象具有数据绑定依赖属性,则会复制表达式,但可能不会再解析。 有关克隆数据绑定对象的详细信息,请参阅 可冻结对象概述。 如果对象具有动画化依赖属性,则会复制这些属性的基本 (非动画) 值。 不会复制动画。

请注意,未设置的属性不会复制,也不会复制只读属性。 如果此类属性的默认值为已冻结 Freezable,则该属性值在可修改的克隆中保持冻结状态。

以下列表汇总了此方法的预期行为:

  • 生成的副本包含所有 Freezable 子对象的副本。

  • 不复制未设置和只读属性。

  • 复制表达式。

  • 这些子对象在创建时都不会冻结。

  • 副本本身未冻结。

  • 不会复制动画。

  • 仅复制属性基值,不复制当前动画值。

适用于

另请参阅