Questo articolo è stato tradotto automaticamente. Per visualizzare l'articolo in inglese, selezionare la casella di controllo Inglese. È possibile anche visualizzare il testo inglese in una finestra popup posizionando il puntatore del mouse sopra il testo.
Traduzione
Inglese

Delegato CoerceValueCallback

 

Data di pubblicazione: ottobre 2016

Fornisce un modello per un metodo che viene chiamato ogni volta che un valore di proprietà di dipendenza viene rivalutato o coercizione specificamente richiesto.

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

public delegate object CoerceValueCallback(
	DependencyObject d,
	object baseValue
)

Parametri

d
Type: System.Windows.DependencyObject

Oggetto che la proprietà. Quando il callback viene richiamato, il sistema di proprietà passa questo valore.

baseValue
Type: System.Object

Il nuovo valore della proprietà, prima di qualsiasi tentativo di coercizione.

Valore restituito

Type: System.Object

Il valore assegnato (del tipo appropriato).

I callback basati su CoerceValueCallback può essere assegnato a una proprietà di dipendenza tramite molte tecniche diverse. Ognuna di queste tecniche è necessario creare innanzitutto un nuovo oggetto di metadati di proprietà (PropertyMetadata, o una classe derivata, ad esempio FrameworkPropertyMetadata). Creare l'oggetto di metadati utilizzando una firma del costruttore che accetta il coerceValueCallback parametro e assegnare tale parametro al gestore del callback. O creare i metadati da qualsiasi firma e impostare il CoerceValueCallback proprietà prima di mettere i metadati in uso.

Quando si dispone di metadati, è possibile:

  • Definire una nuova proprietà di dipendenza su una nuova classe, utilizzando la firma di Register, fornendo i metadati come il typeMetadata valore.

  • Eseguire l'override dei metadati (chiamare OverrideMetadata(Type, PropertyMetadata)) per una proprietà di dipendenza esistente, quando si deriva dalla classe che possiede la proprietà di dipendenza.

  • Aggiungere una proprietà di dipendenza esistente a un nuovo DependencyObject classe, utilizzando nuovi metadati, chiamando AddOwner(Type, PropertyMetadata).

Le implementazioni di questo callback devono controllare il valore in baseValue e determinare in base al valore o il tipo se si tratta di un valore che deve essere ulteriormente assegnato.

Il CoerceValueCallback per una dipendenza di proprietà viene richiamata ogni volta che il sistema di proprietà o altri chiamanti chiamano CoerceValue su un DependencyObject istanza, specificando l'identificatore della proprietà come il dp.

Le modifiche al valore della proprietà potrebbero provenire da qualsiasi eventuale partecipante nel sistema di proprietà. Sono inclusi gli stili, invalidazione generica, trigger, eredità del valore della proprietà e impostazione del valore locale.

In genere, è consigliabile evitare di specificare più di un CoerceValueCallback per una determinata proprietà di dipendenza (override o l'aggiunta di nuovi metadati per una proprietà di dipendenza che già dispone di un CoerceValueCallback). Solo uno dei callback sarà in grado di agire. Il callback che agisce sarà quello che è stato applicato alla classe più derivata nell'ereditarietà rispetto al DependencyObject chiamante. Gli altri callback assegnati ai metadati per la proprietà di dipendenza, così come si presentava superiore nella gerarchia proprietario vengono sostituiti quando viene eseguito l'override dei metadati.

L'esempio seguente include un'implementazione di questo callback per forzare il valore memorizzato di una proprietà di dipendenza basata su altri input, ad esempio il valore della proprietà. In questo caso, il callback controlla per vedere se il ShirtType proprietà corrisponde a un tipo di camicia con pulsanti; in tal caso stabilisce un colore predefinito iniziale per il ButtonColor, se il tipo di camicia non dispone di alcun pulsante, forza il ButtonColor valore di un valore iniziale, che determina il Interfaccia utente (non mostrato) per rimuovere l'elenco a discesa dalle scelte effettive.

private static object CoerceButtonColor(DependencyObject d, object value)
{
	ShirtTypes newShirtType = (d as Shirt).ShirtType;
	if (newShirtType == ShirtTypes.Dress || newShirtType == ShirtTypes.Bowling)
	{
		return ButtonColors.Black;				
	}
	return ButtonColors.None;
}

.NET Framework
Disponibile da 3.0
Torna all'inizio
Mostra: