CreateDefaultValueCallback Délégué
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
Représente la méthode qui peut être appelée dans le cadre d’un constructeur PropertyMetadata pour différer la définition d’une valeur par défaut d’une propriété de dépendance.
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
Valeur renvoyée
Platform::Object
Valeur par défaut souhaitée.
- Attributs
Exemples
Cet exemple montre un pseudocode pour utiliser CreateDefaultValueCallback dans un scénario de propriété de dépendance personnalisée. Plus précisément, cela crée PropertyMetadata à utiliser dans un appel DependencyProperty.Register (non affiché).
PropertyMetadata metadata = PropertyMetadata.Create(
new CreateDefaultValueCallback(() =>
{
return new CustomClass() //a DependencyObject
{
CustomProperty1 = "default", //DependencyProperty of type String
CustomProperty2 = -1; //DependencyProperty of type Int32
}
})
Remarques
Lorsque vous inscrivez une propriété de dépendance personnalisée, vous pouvez fournir des métadonnées (une valeur PropertyMetadata ) qui fournit une valeur par défaut pour toutes les utilisations de la propriété de dépendance. Souvent, il est suffisant de fournir cette valeur directement dans les métadonnées en tant que valeur immédiate. Cela fonctionne toujours pour n’importe quelle valeur de type valeur, par exemple en spécifiant une valeur par défaut de -1 pour une int
propriété value. Toutefois, si vous souhaitez signaler une valeur par défaut pour une propriété qui est une propriété de référence, telle qu’une valeur DependencyObject , vous pouvez rencontrer un problème de thread lié au fonctionnement des propriétés de dépendance. Tous les objets DependencyObject sont toujours créés sur un thread d’interface utilisateur. Mais il est possible que le thread qui inscrit la propriété et le thread qui utilise finalement une instance de l’objet et tente d’accéder à la valeur par défaut ne soient pas le même thread d’interface utilisateur. Si vous fournissez un CreateDefaultValueCallback dans votre PropertyMetadata plutôt qu’un instance fixe, la valeur par défaut de la propriété est créée juste-à-temps et est garantie d’être accessible par le thread qui utilise réellement la propriété. En d’autres termes, la propriété en tant qu’inscrit a différé la valeur par défaut, mais la propriété telle qu’elle est utilisée peut maintenant fournir une valeur par défaut thread-safe.
Un CreateDefaultValueCallback classique ne doit rien faire d’autre qu’appeler un constructeur pour le type de référence utilisé comme valeur, et définir les propriétés de ce type de référence, puis le renvoyer.
Pour spécifier un CreateDefaultValueCallback dans un instance PropertyMetadata, vous devez utiliser PropertyMetadata.Create pour créer le instance, et non un constructeur PropertyMetadata.