CreateDefaultValueCallback Délégué

Définition

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 de 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

Object

Platform::Object

Valeur par défaut souhaitée.

Attributs

Exemples

Cet exemple montre le pseudocode pour l’utilisation de CreateDefaultValueCallback dans un scénario de propriété de dépendance personnalisé. 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 (valeur PropertyMetadata ) qui fournissent une valeur par défaut pour toutes les utilisations de la propriété de dépendance. Plusieurs fois, il est suffisant de fournir cette valeur directement dans les métadonnées en tant que valeur immédiate. Cela fonctionnera 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é valeur. 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 éventuellement une instance de l’objet et tente d’accéder à la valeur par défaut ne sont pas le même thread d’interface utilisateur. Si vous fournissez un CreateDefaultValueCallback dans votre PropertyMetadata plutôt qu’une 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 que registre reporte 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 plus 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 retourner.

Pour spécifier un CreateDefaultValueCallback dans une instance PropertyMetadata , vous devez utiliser PropertyMetadata.Create pour créer l’instance, et non un constructeur PropertyMetadata .

S’applique à

Voir aussi