2010-04-22 5 views
0

XAML:Comment lire une propriété de dépendance d'une méthode

<my:Control ItemsSource="{StaticResource MySource}" A="true" /> 

On suppose un contrôle avec une propriété de dépendance A avec une valeur par défaut false; et une méthode pour gérer la collection Source:

protected override void OnItemsSourceChanged(System.Collections.IEnumerable oldValue, System.Collections.IEnumerable newValue) {} 

dans lequel vous souhaitez regarder A et lecture de sa valeur (ce qui est vrai). comment voulez-vous vous assurer que A est déjà initialisé et a une valeur donnée?

Ou comment cela devrait-il être fait correctement?

Dans mon cas, A est quelque chose comme AllowLateBinding ..

Peut-coerce rappel me aider?

Répondre

0

Vous pouvez le faire en fournissant une valeur par défaut dans la définition de DependencyProperty ou vous pouvez définir la valeur par défaut dans votre constructeur de classes. Lorsque vous enregistrez une propriété de dépendance, vous pouvez spécifier un objet PropertyMetadata qui donne la valeur par défaut.

Lorsque vous enregistrez une propriété de dépendance, vous pouvez spécifier un objet PropertyMetadata qui donne la valeur par défaut.

Regardez par exemple la méthode DependencyProperty.Register.

+0

Je pense que nous avons couru pour malentendu, parce que j'ai une valeur par défaut A et il est faux. Maintenant, si quelqu'un utilise le contrôle et définit A = "vrai", je dois être en mesure de lire vrai avant de charger les éléments dans le contrôle (parlé dans la méthode remplacée par ItemsSource) –

1

Je ne suis pas sûr de l'exactitude, mais en fonction de votre logique de programme exact, cela pourrait fonctionner:

protected override void OnItemsSourceChanged(IEnumerable oldValue, IEnumerable newValue) 
{ 
    if (IsInitialized) 
    { 
    DoWork(oldValue, newValue); 
    } 
    else 
    { 
    Initialized += (sender, e) => { DoWork(oldValue, newValue); }; 
    } 
} 
Questions connexes