Compartir a través de


CreateDefaultValueCallback Delegado

Definición

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(typeof(Microsoft.UI.Xaml.WinUIContract), 65536)]
[Windows.Foundation.Metadata.Guid(2139130885, 10948, 23257, 172, 138, 38, 137, 3, 51, 216, 30)]
public delegate object CreateDefaultValueCallback();
Public Delegate Function CreateDefaultValueCallback() As Object 

Valor devuelto

Object

Platform::Object

Valor predeterminado deseado.

Atributos

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 int propiedad value. Sin embargo, si desea informar de 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 está usando realmente la propiedad . En otras palabras, 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 un valor y establecer las propiedades de ese tipo de referencia y, a continuación, devolverlo.

Para especificar un CreateDefaultValueCallback dentro de una instancia propertyMetadata , debe usar PropertyMetadata.Create para crear la instancia, no un constructor PropertyMetadata .

Se aplica a

Consulte también