Freigeben über


Gewusst wie: Erstellen einer überschreibbaren Kopie eines schreibgeschützten Freezable-Objekts

In diesem Beispiel wird gezeigt, wie Sie die Clone-Methode verwenden, um eine schreibbare Kopie eines schreibgeschützten Freezable-Objekts zu erstellen.

Nachdem ein Freezable-Objekt als schreibgeschützt („fixiert“) markiert wurde, können Sie es nicht mehr ändern. Sie können jedoch die Clone-Methode verwenden, um einen modifizierbaren Klon des fixierten Objekts zu erstellen.

Beispiel

Im folgenden Beispiel wird ein modifizierbarer Klon eines fixierten SolidColorBrush-Objekts erstellt.

Button myButton = new Button();
SolidColorBrush myBrush = new SolidColorBrush(Colors.Yellow);

// Freezing a Freezable before it provides
// performance improvements if you don't
// intend on modifying it.
if (myBrush.CanFreeze)
{
    // Makes the brush unmodifiable.
    myBrush.Freeze();
}

myButton.Background = myBrush;

// If you need to modify a frozen brush,
// the Clone method can be used to
// create a modifiable copy.
SolidColorBrush myBrushClone = myBrush.Clone();

// Changing myBrushClone does not change
// the color of myButton, because its
// background is still set by myBrush.
myBrushClone.Color = Colors.Red;

// Replacing myBrush with myBrushClone
// makes the button change to red.
myButton.Background = myBrushClone;
Dim myButton As New Button()
Dim myBrush As New SolidColorBrush(Colors.Yellow)

' Freezing a Freezable before it provides
' performance improvements if you don't
' intend on modifying it. 
If myBrush.CanFreeze Then
    ' Makes the brush unmodifiable.
    myBrush.Freeze()
End If


myButton.Background = myBrush

' If you need to modify a frozen brush,
' the Clone method can be used to
' create a modifiable copy.
Dim myBrushClone As SolidColorBrush = myBrush.Clone()

' Changing myBrushClone does not change
' the color of myButton, because its
' background is still set by myBrush.
myBrushClone.Color = Colors.Red

' Replacing myBrush with myBrushClone
' makes the button change to red.
myButton.Background = myBrushClone

Weitere Informationen zu Freezable-Objekten finden Sie in der Übersicht über Freezable-Objekte.

Weitere Informationen