CoerceValueCallback CoerceValueCallback CoerceValueCallback CoerceValueCallback Delegate

Definición

Proporciona una plantilla para un método al que se llama cuando se vuelve a evaluar el valor de una propiedad de dependencia o cuando se solicita específicamente la conversión.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 

Parámetros

d
DependencyObject DependencyObject DependencyObject DependencyObject

Objeto en el que existe la propiedad.The object that the property exists on. Cuando se invoca la devolución de llamada, el sistema de propiedades pasará este valor.When the callback is invoked, the property system will pass this value.

baseValue
Object Object Object Object

Nuevo valor de la propiedad, antes de cualquier intento de conversión.The new value of the property, prior to any coercion attempt.

Valor devuelto

System.Object

Valor convertido (con el tipo apropiado).The coerced value (with appropriate type).

Herencia
CoerceValueCallbackCoerceValueCallbackCoerceValueCallbackCoerceValueCallback

Ejemplos

El ejemplo siguiente incluye una implementación de esta devolución de llamada para convertir el valor almacenado de una propiedad de dependencia basado en otras entradas, como el valor de otra propiedad.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. En este caso, la devolución de llamada comprueba si el ShirtType propiedad se corresponde con un tipo de camisa que tiene botones; si es así establece un color predeterminado inicial para el ButtonColor, si el tipo de la camisa no tiene ningún botón, convierte el ButtonColor valor a un valor inicial, lo que hace que el IUUI (no mostrado) para quitar esa lista desplegable de las opciones efectivas.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 IUUI (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

Comentarios

Las devoluciones de llamada según CoerceValueCallback puede asignarse a una propiedad de dependencia a través de varias técnicas diferentes.Callbacks based on CoerceValueCallback can be assigned to a dependency property through several different techniques. Cada una de estas técnicas requiere que primero cree un nuevo objeto de metadatos de propiedad (PropertyMetadata, o una clase derivada como FrameworkPropertyMetadata).Each of these techniques requires that you first create a new property metadata object (PropertyMetadata, or a derived class such as FrameworkPropertyMetadata). Crear el objeto de metadatos mediante una firma del constructor que toma el coerceValueCallback parámetro y asignar ese parámetro al controlador de devolución de llamada.Create the metadata object using a constructor signature that takes the coerceValueCallback parameter, and assign that parameter to your callback handler. O generar los metadatos por cualquier firma y establezca el CoerceValueCallback propiedad antes de colocar los metadatos en uso.Or construct the metadata by any signature and set the CoerceValueCallback property prior to putting the metadata in use.

Cuando tenga estos metadatos, puede:When you have this metadata, you can:

  • Definir una nueva propiedad de dependencia en una nueva clase, utilizando cualquiera de las firmas de Register, lo que proporciona los metadatos como el typeMetadata valor.Define a new dependency property on a new class, using either signature of Register, giving the metadata as the typeMetadata value.

  • Invalidar los metadatos (llamar a OverrideMetadata(Type, PropertyMetadata)) para una propiedad de dependencia existente, al derivar de la clase que posee la propiedad de dependencia.Override the metadata (call OverrideMetadata(Type, PropertyMetadata)) for an existing dependency property, when you derive from the class that owns the dependency property.

  • Agregue una propiedad de dependencia existente a un nuevo DependencyObject clase, utilizando los nuevos metadatos, mediante una llamada a AddOwner(Type, PropertyMetadata).Add an existing dependency property to a new DependencyObject class, using new metadata, by calling AddOwner(Type, PropertyMetadata).

Las implementaciones de esta devolución de llamada deben comprobar el valor baseValue y determinar según el valor o el tipo si se trata de un valor que deba convertirse aún más.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.

El CoerceValueCallback para una dependencia se invoca cada vez que el sistema de propiedades o cualquier otro autor de llamada llama a la propiedad CoerceValue en un DependencyObject instancia, especificando el identificador de la propiedad como el dp.The 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.

Los cambios realizados en el valor de propiedad pueden proceder de cualquier posible participante en el sistema de propiedades.Changes to the property value may have come from any possible participant in the property system. Esto incluye los estilos, invalidación genérica, desencadenadores, herencia de valores de propiedad y valor local.This includes styles, generic invalidation, triggers, property value inheritance, and local value setting.

Por lo general debe evitar especificar más de una CoerceValueCallback para cualquier propiedad de dependencia de dada (reemplaza o agrega con nuevos metadatos para una propiedad de dependencia que ya tenía un CoerceValueCallback).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 una de las devoluciones de llamada podrá actuar. La devolución de llamada que actúa será el que se aplicó a la clase más derivada en la herencia en comparación con el DependencyObject llamador.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. Cuando se invalidan los metadatos, se reemplazan otras devoluciones de llamada como asignadas a los metadatos para la propiedad de dependencia tal como se encontraban superior en la jerarquía del propietario.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.

Extension Methods

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

Obtiene un objeto que representa el método representado por el delegado especificado.Gets an object that represents the method represented by the specified delegate.

Se aplica a

Consulte también: