Freezable.CloneCurrentValueCore(Freezable) Freezable.CloneCurrentValueCore(Freezable) Freezable.CloneCurrentValueCore(Freezable) Freezable.CloneCurrentValueCore(Freezable) Method


使用当前属性值使该实例成为指定 Freezable 的可修改克隆(深层复制)。Makes the instance a modifiable clone (deep copy) of the specified Freezable using current property values.

 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)


Freezable Freezable Freezable Freezable

要克隆的 FreezableThe Freezable to be cloned.


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

依赖项属性中存储其所有数据且,不需要执行额外的初始化工作的类无需重写CloneCurrentValueCore(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 CloneCurrentValueCore(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. 如果对象包含与表达式 (如数据绑定) 的依赖项属性,该表达式的当前值被复制但不是表达式本身。If the object contains dependency properties with expressions (such as a data binding), the current value of the expression is copied but not the expression itself.

如果该对象具有经过动画处理的依赖项属性,复制这些属性经过动画处理的当前值,但动画不是。If the object has animated dependency properties, the current animated value of those properties is copied, but the animations are not.

请注意,取消设置的属性不会复制,也不是只读的属性。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 and read-only properties are not copied.

-如果某个属性进行动画处理,复制其当前值,但动画本身不是。- If a property is animated, its current value is copied, but the animation itself is not.

-None 这些子对象的已冻结上创建。- None of these sub-objects are frozen on creation.

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