Leggere in inglese

Condividi tramite


CreateDefaultValueCallback Delegato

Definizione

Rappresenta il metodo che può essere richiamato come parte di un costruttore PropertyMetadata per rinviare la definizione di un valore predefinito della proprietà di dipendenza.

C#
[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();

Valore restituito

Object

Valore predefinito desiderato.

Attributi

Requisiti Windows

Famiglia di dispositivi
Windows 10 (è stato introdotto in 10.0.10240.0)
API contract
Windows.Foundation.UniversalApiContract (è stato introdotto in v1.0)

Esempio

In questo esempio viene illustrato lo pseudocode per l'uso di CreateDefaultValueCallback in uno scenario di proprietà di dipendenza personalizzato. In particolare, questo crea PropertyMetadata da usare in una chiamata DependencyProperty.Register (non visualizzata).

C#
PropertyMetadata metadata = PropertyMetadata.Create(
    new CreateDefaultValueCallback(() =>
    {
        return new CustomClass() //a DependencyObject
        {
            CustomProperty1 = "default", //DependencyProperty of type String 
            CustomProperty2 = -1; //DependencyProperty of type Int32
        }
    })

Commenti

Quando si registra una proprietà di dipendenza personalizzata, è possibile fornire metadati (valore PropertyMetadata ) che fornisce un valore predefinito per tutti gli usi della proprietà di dipendenza. Molte volte è sufficiente fornire tale valore direttamente nei metadati come valore immediato. Questo funzionerà sempre per qualsiasi valore di tipo valore, ad esempio specificando un valore predefinito di -1 per una proprietà valore int . Tuttavia, se si vuole segnalare un valore predefinito per una proprietà di riferimento, ad esempio un valore DependencyObject , è possibile riscontrare un problema di threading correlato al funzionamento delle proprietà di dipendenza. Tutti gli oggetti DependencyObject vengono sempre creati in un thread dell'interfaccia utente. Tuttavia, è possibile che il thread che registra la proprietà e il thread che alla fine usa un'istanza dell'oggetto e tenta di accedere al thread predefinito non sono lo stesso thread dell'interfaccia utente. Se si specifica un createDefaultValueCallback nella proprietàMetadata anziché un'istanza fissa, il valore predefinito della proprietà viene creato just-in-time ed è garantito che sia acccessibile dal thread che usa effettivamente la proprietà. In altre parole la proprietà come registra il valore predefinito, ma la proprietà utilizzata può ora fornire un valore predefinito thread-safe.

Un tipico CreateDefaultValueCallback non deve più chiamare un costruttore per il tipo di riferimento usato come valore e impostare le proprietà del tipo di riferimento, quindi restituirlo.

Per specificare un createDefaultValueCallback all'interno di un'istanza di PropertyMetadata , è necessario usare PropertyMetadata.Create per creare l'istanza, non un costruttore PropertyMetadata .

Si applica a

Prodotto Versioni
WinRT Build 10240, Build 10586, Build 14383, Build 15063, Build 16299, Build 17134, Build 17763, Build 18362, Build 19041, Build 20348, Build 22000, Build 22621, Build 26100

Vedi anche