CoerceValueCallback CoerceValueCallback CoerceValueCallback CoerceValueCallback Delegate

Definizione

Fornisce un modello per un metodo chiamato ogni volta che un valore della proprietà di dipendenza viene rivalutato o se è specificamente richiesta la coercizione.Provides a template for a method that is called whenever a dependency property value is being re-evaluated, or coercion is specifically requested.

public delegate System::Object ^ CoerceValueCallback(DependencyObject ^ d, System::Object ^ baseValue);
public delegate object CoerceValueCallback(DependencyObject d, object baseValue);
type CoerceValueCallback = delegate of DependencyObject * obj -> obj
Public Delegate Function CoerceValueCallback(d As DependencyObject, baseValue As Object) As Object 

Parametri

d
DependencyObject DependencyObject DependencyObject DependencyObject

Oggetto nel quale esiste la proprietà.The object that the property exists on. Quando viene richiamato il callback, il sistema di proprietà passa questo valore.When the callback is invoked, the property system will pass this value.

baseValue
Object Object Object Object

Nuovo valore della proprietà prima dei tentativi di coercizione.The new value of the property, prior to any coercion attempt.

Valore restituito

System.Object

Valore assegnato tramite coercizione (del tipo appropriato).The coerced value (with appropriate type).

Ereditarietà
CoerceValueCallbackCoerceValueCallbackCoerceValueCallbackCoerceValueCallback

Esempi

Nell'esempio seguente viene inclusa un'implementazione di questo callback per forzare il valore archiviato di una proprietà di dipendenza in base ad altri input, ad esempio il valore di un'altra proprietà.The following example includes an implementation of this callback to coerce the stored value of a dependency property based on other inputs, such as another property's value. In questo caso, il callback verifica se la ShirtType proprietà corrisponde a un tipo di camicia con pulsanti; in caso affermativo, stabilisce un colore predefinito iniziale per l'oggetto ButtonColor, se il tipo di camicia non ha pulsanti, assegna il valore ButtonColor tornare a un valore iniziale, che determina la Interfaccia utenteUI rimozione dell'elenco a discesa dalle opzioni effettive.In this case, the callback checks to see whether the ShirtType property corresponds to a type of shirt that has buttons; if so it establishes a starting default color for the ButtonColor, if the shirt type has no buttons, it coerces the ButtonColor value back to a starting value, which causes the Interfaccia utenteUI (not shown) to remove that dropdown from the effective choices.

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;
}
Private Shared Function CoerceButtonColor(ByVal d As DependencyObject, ByVal value As Object) As Object
	Dim newShirtType As ShirtTypes = (TryCast(d, Shirt)).ShirtType
	If newShirtType = ShirtTypes.Dress OrElse newShirtType = ShirtTypes.Bowling Then
		Return ButtonColors.Black
	End If
	Return ButtonColors.None
End Function

Commenti

I callback basati su CoerceValueCallback possono essere assegnati a una proprietà di dipendenza tramite diverse tecniche.Callbacks based on CoerceValueCallback can be assigned to a dependency property through several different techniques. Ognuna di queste tecniche richiede innanzitutto la creazione di un nuovo oggetto di metadati dellaPropertyMetadataproprietà (o una classe derivata, FrameworkPropertyMetadataad esempio).Each of these techniques requires that you first create a new property metadata object (PropertyMetadata, or a derived class such as FrameworkPropertyMetadata). Creare l'oggetto di metadati utilizzando una firma del costruttore che coerceValueCallback accetta il parametro e assegnare tale parametro al gestore di callback.Create the metadata object using a constructor signature that takes the coerceValueCallback parameter, and assign that parameter to your callback handler. Oppure costruire i metadati in base a qualsiasi firma e CoerceValueCallback impostare la proprietà prima di inserire i metadati in uso.Or construct the metadata by any signature and set the CoerceValueCallback property prior to putting the metadata in use.

Quando si dispone di questi metadati, è possibile:When you have this metadata, you can:

Le implementazioni di questo callback devono controllare il valore baseValue in e determinare in base al valore o al tipo se si tratta di un valore che deve essere ulteriormente forzato.Implementations of this callback should check the value in baseValue and determine based on either the value or the type whether this is a value that needs to be further coerced.

Per una proprietà di dipendenza viene richiamato ogni volta che il sistema di proprietà o qualsiasi altro CoerceValue chiamante chiama DependencyObject su un'istanza di, specificando l' dpidentificatore della proprietà come. CoerceValueCallbackThe CoerceValueCallback for a dependency property is invoked any time that the property system or any other caller calls CoerceValue on a DependencyObject instance, specifying that property's identifier as the dp.

Le modifiche al valore della proprietà possono provenire da qualsiasi partecipante possibile al sistema di proprietà.Changes to the property value may have come from any possible participant in the property system. Sono inclusi gli stili, l'invalidamento generico, i trigger, l'ereditarietà del valore della proprietà e l'impostazione del valore locale.This includes styles, generic invalidation, triggers, property value inheritance, and local value setting.

In genere è consigliabile evitare di specificare più CoerceValueCallback di una proprietà di dipendenza specificata (override o aggiunta con nuovi metadati per una proprietà di dipendenza che ha già CoerceValueCallbackun).Generally you should avoid specifying more than one CoerceValueCallback for any given dependency property (overriding or adding with new metadata for a dependency property that already had a CoerceValueCallback). Solo uno dei callback sarà in grado di agire. Il callback che agisce sarà quello applicato alla classe più derivata nell'ereditarietà rispetto al DependencyObject chiamante.Only one of the callbacks will be able to act. The acting callback will be the one that was applied to the most derived class in the inheritance as compared to the DependencyObject caller. Gli altri callback assegnati ai metadati per la proprietà di dipendenza perché esisteva in un livello superiore nella gerarchia del proprietario vengono sostituiti quando viene eseguito l'override dei metadati.Other callbacks as assigned to metadata for the dependency property as it existed higher in the owner hierarchy are replaced when the metadata is overridden.

Metodi di estensione

GetMethodInfo(Delegate) GetMethodInfo(Delegate) GetMethodInfo(Delegate) GetMethodInfo(Delegate)

Ottiene un oggetto che rappresenta il metodo rappresentato dal delegato specificato.Gets an object that represents the method represented by the specified delegate.

Si applica a

Vedi anche