CreateDefaultValueCallback Delegato
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
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.
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
Valore restituito
Platform::Object
Valore predefinito desiderato.
- Attributi
Esempio
Questo esempio mostra lo pseudocodice 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).
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 specificare metadati (un 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 il valore predefinito -1 per una int
proprietà value. Tuttavia, se si desidera segnalare un valore predefinito per una proprietà che è 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 tenti di accedere all'impostazione predefinita non siano lo stesso thread dell'interfaccia utente. Se si specifica un oggetto CreateDefaultValueCallback in PropertyMetadata anziché un'istanza fissa, il valore predefinito della proprietà viene creato just-in-time ed è garantito che sia accessibile dal thread che usa effettivamente la proprietà . In altre parole, la proprietà come registra rinvia il valore predefinito, ma la proprietà usata può ora fornire un valore predefinito thread-safe.
Un oggetto CreateDefaultValueCallback tipico non deve fare altro che chiamare un costruttore per il tipo di riferimento usato come valore e impostare le proprietà del tipo di riferimento, quindi restituirlo.
Per specificare un oggetto CreateDefaultValueCallback all'interno di un'istanza propertyMetadata , è necessario utilizzare PropertyMetadata.Create per creare l'istanza, non un costruttore PropertyMetadata .
Si applica a
Vedi anche
Commenti e suggerimenti
https://aka.ms/ContentUserFeedback.
Presto disponibile: Nel corso del 2024 verranno gradualmente disattivati i problemi di GitHub come meccanismo di feedback per il contenuto e ciò verrà sostituito con un nuovo sistema di feedback. Per altre informazioni, vedereInvia e visualizza il feedback per