Questo argomento non è stato ancora valutato - Valuta questo argomento

Metodo Freezable.Clone

Aggiornamento: novembre 2007

Crea un clone modificabile dell'oggetto Freezable corrente, eseguendo copie complete dei valori dell'oggetto. In caso di copia delle proprietà di dipendenza dell'oggetto, questo metodo copia le espressioni (che non potrebbe più risolvere) ma non le animazioni o i valori correnti.

Spazio dei nomi:  System.Windows
Assembly:  WindowsBase (in WindowsBase.dll)

public Freezable Clone()
public Freezable Clone()
public function Clone() : Freezable
Non è possibile utilizzare metodi in XAML.

Valore restituito

Tipo: System.Windows.Freezable

Clone modificabile dell'oggetto corrente. La proprietà IsFrozen dell'oggetto clone restituisce il valore false anche se il valore della proprietà IsFrozen dell'oggetto di origine è true.

I metodi Clone e CloneCurrentValue producono cloni modificabili di oggetti bloccati Freezable (i metodi duplicano anche oggetti Freezable che non sono bloccati). Il clone è effettivamente una copia completa dell'oggetto corrente.

Nella tabella riportata di seguito vengono riepilogate alcune delle differenze tra i metodi Clone e CloneCurrentValue.

Azione

Duplicare il comportamento del metodo

Comportamento del metodo CloneCurrentValue

Copia di una proprietà di dipendenza che ha un'espressione

L'espressione è copiata, ma potrebbe non risolvere più. Per ulteriori informazioni, vedere Cenni preliminari sugli oggetti Freezable.

Il valore corrente dell'espressione è copiato, ma non l'espressione stessa.

Copia di una proprietà di dipendenza animata

Il valore di base (non-animato) della proprietà è copiato. Le animazioni non sono copiate.

Il valore corrente animato della proprietà è copiato. Le animazioni non sono copiate.

Notare che le proprietà che annullano l’impostazione non sono copiate. Se una proprietà che annulla l'impostazione ha un valore predefinito che è un Freezablebloccato, quel valore della proprietà rimane bloccato in un clone altrimenti modificabile.

Spostare un Freezable tra Thread

Questo metodo può essere utile per spostare Freezable tra thread. Per prima cosa, rendere Freezable immodificabile chiamando il metodo Freeze. Ora un altro thread può accedere a Freezable e può fare Clone locale a cui può accedere.

Note per gli eredi:

Questo metodo utilizza CloneCore per produrre il clone. Per modificare il comportamento di questo metodo in una classe derivata, eseguire l'override del metodo CloneCore.

In questo esempio viene illustrato come utilizzare il metodo Clone per creare una copia scrivibile di un oggetto Freezable di sola lettura.

Dopo che un oggetto Freezable viene contrassegnato come di sola lettura (bloccato), non è possibile modificarlo. Tuttavia, è possibile utilizzare il metodo Clone per creare un duplicato modificabile dell'oggetto bloccato.

Nell'esempio seguente viene creato un duplicato modificabile di un oggetto SolidColorBrush bloccato.

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;


Per ulteriori informazioni sugli oggetti Freezable, vedere Cenni preliminari sugli oggetti Freezable.

Windows Vista

.NET Framework e .NET Compact Framework non supportano tutte le versioni di ciascuna piattaforma. Per un elenco delle versioni supportate, vedere Requisiti di sistema di .NET Framework.

.NET Framework

Supportato in: 3.5, 3.0
Il documento è risultato utile?
(1500 caratteri rimanenti)

Aggiunte alla community

AGGIUNGI
Microsoft sta conducendo un sondaggio in linea per comprendere l'opinione degli utenti in merito al sito Web di MSDN. Se si sceglie di partecipare, quando si lascia il sito Web di MSDN verrà visualizzato il sondaggio in linea.

Si desidera partecipare?
© 2013 Microsoft. Tutti i diritti riservati.