CreateDefaultValueCallback Delegado
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Representa el método que se puede invocar como parte de un constructor PropertyMetadata para aplazar la definición de un valor predeterminado de propiedad de dependencia.
public delegate Platform::Object ^ CreateDefaultValueCallback();
/// [Windows.Foundation.Metadata.ContractVersion(Windows.Foundation.UniversalApiContract, 65536)]
/// [Windows.Foundation.Metadata.Guid(3605836076, 5557, 20168, 185, 92, 205, 210, 8, 240, 129, 83)]
class CreateDefaultValueCallback : MulticastDelegate
[Windows.Foundation.Metadata.ContractVersion(typeof(Windows.Foundation.UniversalApiContract), 65536)]
[Windows.Foundation.Metadata.Guid(3605836076, 5557, 20168, 185, 92, 205, 210, 8, 240, 129, 83)]
public delegate object CreateDefaultValueCallback();
Public Delegate Function CreateDefaultValueCallback() As Object
Valor devuelto
Valor predeterminado deseado.
- Atributos
Requisitos de Windows
Familia de dispositivos |
Windows 10 (se introdujo en la versión 10.0.10240.0)
|
API contract |
Windows.Foundation.UniversalApiContract (se introdujo en la versión v1.0)
|
Ejemplos
En este ejemplo se muestra el pseudocódigo para usar CreateDefaultValueCallback en un escenario de propiedad de dependencia personalizada. En concreto, esto crea PropertyMetadata que se usará en una llamada DependencyProperty.Register (no se muestra).
PropertyMetadata metadata = PropertyMetadata.Create(
new CreateDefaultValueCallback(() =>
{
return new CustomClass() //a DependencyObject
{
CustomProperty1 = "default", //DependencyProperty of type String
CustomProperty2 = -1; //DependencyProperty of type Int32
}
})
Comentarios
Al registrar una propiedad de dependencia personalizada, puede proporcionar metadatos (un valor PropertyMetadata ) que proporcione un valor predeterminado para todos los usos de la propiedad de dependencia. Muchas veces es adecuado proporcionar ese valor directamente en los metadatos como un valor inmediato. Esto siempre funcionará para cualquier valor de tipo de valor, por ejemplo, especificando un valor predeterminado de -1 para una propiedad int value. Sin embargo, si desea notificar un valor predeterminado para una propiedad que es una propiedad de referencia, como un valor DependencyObject , puede encontrar un problema de subproceso relacionado con el funcionamiento de las propiedades de dependencia. Todos los objetos DependencyObject siempre se crean en un subproceso de interfaz de usuario. Pero es posible que el subproceso que registra la propiedad y el subproceso que finalmente usa una instancia del objeto e intenta acceder al valor predeterminado no son el mismo subproceso de interfaz de usuario. Si proporciona un CreateDefaultValueCallback en propertyMetadata en lugar de una instancia fija, el valor predeterminado de la propiedad se crea Just-In-Time y se garantiza que el subproceso que usa realmente la propiedad . Es decir, la propiedad como registra lo que es el valor predeterminado, pero la propiedad que se usa ahora puede proporcionar un valor predeterminado seguro para subprocesos.
Un CreateDefaultValueCallback típico no debe hacer nada más que llamar a un constructor para el tipo de referencia que se usa como valor y establecer las propiedades de ese tipo de referencia y, a continuación, devolverlo.
Para especificar un CreateDefaultValueCallback dentro de una instancia de PropertyMetadata , debe usar PropertyMetadata.Create para crear la instancia, no un constructor PropertyMetadata .