This documentation is archived and is not being maintained.

Freezable::CloneCurrentValue Method

Creates a modifiable clone (deep copy) of the Freezable using its current values.

Namespace:  System.Windows
Assembly:  WindowsBase (in WindowsBase.dll)

Freezable^ CloneCurrentValue()

Return Value

Type: System.Windows::Freezable
A modifiable clone of the current object. The cloned object's IsFrozen property is false even if the source's IsFrozen property is true.

The Clone and CloneCurrentValue methods produce modifiable clones of frozen Freezable objects (the methods also clone Freezable objects that are not frozen). The clone is effectively a deep copy of the current object.

The following table summarizes the differences between the Clone and CloneCurrentValue methods.


Clone method behavior

CloneCurrentValue method behavior

Copying a dependency property that has an expression

The expression is copied, but might no longer resolve. For more information, see Freezable Objects Overview.

The current value of the expression is copied, but not the expression itself.

Copying an animated dependency property

The property's base (non-animated) value is copied. Animations are not copied.

The property's current animated value is copied. Animations are not copied.

Note that unset properties are not copied. If an unset property has a default value that is a frozen Freezable, that property value remains frozen in the otherwise modifiable clone.

Move a Freezable Between Threads

This method can be useful for moving a Freezable between threads. First, make the Freezable unmodifiable by using its Freeze method. Now another thread can access the Freezable and make a local clone that it can access.

Notes to Inheritors

This method uses the CloneCurrentValueCore method to produce the clone; Freezable implementers who override CloneCurrentValueCore must ensure that the copy is not frozen on creation.

.NET Framework

Supported in: 4, 3.5, 3.0

.NET Framework Client Profile

Supported in: 4, 3.5 SP1

Windows 7, Windows Vista SP1 or later, Windows XP SP3, Windows Server 2008 (Server Core not supported), Windows Server 2008 R2 (Server Core supported with SP1 or later), Windows Server 2003 SP2

The .NET Framework does not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.