Freezable.CloneCurrentValueCore(Freezable) 方法

定义

使用当前属性值使该实例成为指定 Freezable 的可修改克隆(深层复制)。

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

参数

sourceFreezable
Freezable

要克隆的 Freezable

注解

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

继承者说明

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

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

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

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

所有实现必须调用此方法的基本实现。 实现应仅执行未由默认实现执行的工作。 默认实现会生成所有可写本地设置属性的深层副本。 如果对象包含具有表达式 (的依赖属性,例如数据绑定) ,则复制表达式的当前值,但不会复制表达式本身。

如果对象具有动画化依赖属性,则会复制这些属性的当前动画值,但不会复制动画。

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

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

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

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

  • 如果对属性进行动画处理,则复制其当前值,但动画本身不会复制。

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

  • 副本本身未冻结。

适用于

另请参阅