CreateDefaultValueCallback Delegar
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Representa o método que pode ser invocado como parte de um construtor PropertyMetadata para adiar a definição de um valor padrão da propriedade de dependência.
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 Retornado
Platform::Object
O valor padrão desejado.
- Atributos
Exemplos
Este exemplo mostra o pseudocódigo para usar CreateDefaultValueCallback em um cenário de propriedade de dependência personalizada. Especificamente, isso cria PropertyMetadata a ser usado em uma chamada DependencyProperty.Register (não mostrada).
PropertyMetadata metadata = PropertyMetadata.Create(
new CreateDefaultValueCallback(() =>
{
return new CustomClass() //a DependencyObject
{
CustomProperty1 = "default", //DependencyProperty of type String
CustomProperty2 = -1; //DependencyProperty of type Int32
}
})
Comentários
Ao registrar uma propriedade de dependência personalizada, você pode fornecer metadados (um valor PropertyMetadata ) que fornece um valor padrão para todos os usos da propriedade de dependência. Muitas vezes, é adequado fornecer esse valor diretamente nos metadados como um valor imediato. Isso sempre funcionará para qualquer valor de tipo de valor, por exemplo, especificando um valor padrão de -1 para uma int
propriedade de valor. No entanto, se você quiser relatar um valor padrão para uma propriedade que é uma propriedade de referência, como um valor DependencyObject , poderá encontrar um problema de threading relacionado a como as propriedades de dependência funcionam. Todos os objetos DependencyObject são sempre criados em um thread de interface do usuário. Mas é possível que o thread que registra a propriedade e o thread que eventualmente usa uma instância do objeto e tenta acessar o padrão não sejam o mesmo thread de interface do usuário. Se você fornecer um CreateDefaultValueCallback em seu PropertyMetadata em vez de uma instância fixa, o valor padrão da propriedade será criado just-in-time e será garantido como acessível pelo thread que está realmente usando a propriedade . Em outras palavras, a propriedade como registra adiado qual é o valor padrão, mas a propriedade como usada agora pode fornecer um valor padrão thread-safe.
Um CreateDefaultValueCallback típico não deve fazer nada além de chamar um construtor para o tipo de referência usado como um valor e definir propriedades desse tipo de referência e, em seguida, retorná-lo.
Para especificar um CreateDefaultValueCallback em uma instância propertyMetadata , você deve usar PropertyMetadata.Create para criar a instância, não um construtor PropertyMetadata .