Exportar (0) Imprimir
Expandir todo
Expandir Minimizar
Este artículo se tradujo de forma manual. Mueva el puntero sobre las frases del artículo para ver el texto original.
Traducción
Original

CoerceValueCallback (Delegado)

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.

Espacio de nombres:  System.Windows
Ensamblado:  WindowsBase (en WindowsBase.dll)

public delegate Object CoerceValueCallback(
	DependencyObject d,
	Object baseValue
)

Parámetros

d
Tipo: System.Windows.DependencyObject
Objeto en el que existe la propiedad. Cuando se invoca la devolución de llamada, el sistema de propiedades pasará este valor.
baseValue
Tipo: System.Object
Nuevo valor de la propiedad, antes de cualquier intento de conversión.

Valor devuelto

Tipo: System.Object
Valor convertido (con el tipo apropiado).

Las devoluciones de llamada basadas en CoerceValueCallback pueden asignarse a una propiedad de dependencia a través de diversas técnicas. Cada una de estas técnicas requiere primero la creación de un nuevo objeto de metadatos de propiedad (PropertyMetadata o una clase derivada, como FrameworkPropertyMetadata). Cree el objeto de metadatos mediante una firma de constructor que tome el parámetro coerceValueCallback y asigne ese parámetro al controlador de devolución de llamadas. O bien, construya los metadatos mediante cualquier firma y establezca la propiedad CoerceValueCallback antes de usar los metadatos.

Cuando tenga estos metadatos, podrá:

  • Definir una nueva propiedad de dependencia en una nueva clase, utilizando cualquiera de las firmas de Register y proporcionando los metadatos como valor de typeMetadata.

  • Invalidar los metadatos (llamando a OverrideMetadata(Type, PropertyMetadata)) de una propiedad de dependencia existente en el caso de derivar de la clase que tiene la propiedad de dependencia.

  • Agregar una propiedad de dependencia existente a una nueva clase DependencyObject, utilizando los nuevos metadatos y llamando a AddOwner(Type, PropertyMetadata).

Las implementaciones de esta devolución de llamada deben comprobar el valor de baseValue y, basándose en el valor o el tipo, determinar si se trata de un valor que necesita más conversiones.

Se invoca la propiedad CoerceValueCallback de una propiedad de dependencia cada vez que el sistema de propiedades o cualquier otro llamador llama a CoerceValue en una instancia de DependencyObject, especificando el identificador de esa propiedad como dp.

Los cambios en el valor de la propiedad pueden proceder de cualquier participante del sistema de propiedades. Éstos incluyen estilos, invalidación genérica, desencadenadores, herencia de los valores de propiedad y la configuración de valores locales.

En general, debe evitar especificar más de un valor de CoerceValueCallback para cualquier propiedad de dependencia (invalidando o agregando nuevos metadatos para una propiedad de dependencia que ya tenía un valor de CoerceValueCallback). Sólo una de las devoluciones de llamada podrá actuar. La devolución de llamada que actúe será la aplicada a la clase más derivada en la herencia en comparación con el llamador de DependencyObject. Las otras devoluciones de llamada asignadas a los metadatos de la propiedad de dependencia en un nivel superior de la jerarquía del propietario se reemplazan cuando se invalidan los metadatos.

En el ejemplo siguiente se incluye una implementación de esta devolución de llamada para convertir el valor almacenado de una propiedad de dependencia basándose en otras entradas, como el valor de otra propiedad. En este caso, la devolución de llamada comprueba si la propiedad ShirtType corresponde a un tipo de camisa que tiene botones; en caso afirmativo, establece un color predeterminado inicial para ButtonColor; si el tipo de camisa no tiene botones, convierte de nuevo el valor de ButtonColor en un valor inicial, lo que hace que la UI (no se muestra) quite ese desplegable de las opciones efectivas.


		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

Compatible con: 4, 3.5, 3.0

.NET Framework Client Profile

Compatible con: 4, 3.5 SP1

Windows 7, Windows Vista SP1 o posterior, Windows XP SP3, Windows Server 2008 (no se admite Server Core), Windows Server 2008 R2 (se admite Server Core con SP1 o posterior), Windows Server 2003 SP2

.NET Framework no admite todas las versiones de todas las plataformas. Para obtener una lista de las versiones compatibles, vea Requisitos de sistema de .NET Framework.

Adiciones de comunidad

AGREGAR
Mostrar:
© 2014 Microsoft