Partager via


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 d’une propriété de dépendance.

public delegate Platform::Object ^ CreateDefaultValueCallback();
/// [Windows.Foundation.Metadata.ContractVersion(Windows.Foundation.UniversalApiContract, 65536)]
/// [Windows.Foundation.Metadata.Guid(3605836076, 5557, 20168, 185, 92, 205, 210, 8, 240, 129, 83)]
class CreateDefaultValueCallback : MulticastDelegate
[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();
Public Delegate Function CreateDefaultValueCallback() As Object 

Valeur renvoyée

Object

Platform::Object

IInspectable

Valeur par défaut souhaitée.

Attributs

Configuration requise pour Windows

Famille d’appareils
Windows 10 (introduit dans 10.0.10240.0)
API contract
Windows.Foundation.UniversalApiContract (introduit dans v1.0)

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 propriété int 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.

S’applique à

Voir aussi