2010-12-28 4 views
1

J'ai un bouton bascule auquel je lie sa propriété 'Tag' à un objet. Je lie ensuite la propriété 'IsChecked' à sa propriété 'Tag'. Mon problème est que le 'IsChecked' est appelé en premier lorsque la fenêtre se charge et la 'Tag' en second. Comment faire pour que la propriété 'Tag' se lie en premier?WPF Binding Order - Comment changer?

<ToggleButton> 

    <ToggleButton.Tag> 
     <Bind An Object...> 
    </ToggleButton.Tag> 

    <ToggleButton.IsChecked> 
     <Binding Converter="{StaticResource SomeConverter}" Path="Tag" RelativeSource="{RelativeSource Self}"/> 
    </ToggleButton.IsChecked> 

</ToggleButton> 

Répondre

4

Pourquoi l'ordre est-il important? Est-ce parce que votre convertisseur ne gère pas le cas lorsque la valeur est null, car il devrait - même si elle renvoie Binding.DoNothing. Lorsque Tag est défini sur quelque chose, votre liaison IsChecked doit être actualisée et votre convertisseur doit fonctionner à nouveau. N'est-ce pas le cas?

+0

Vous avez raison. Selon votre réponse, j'ai revérifié mes fixations et j'ai trouvé une erreur. Plus tard, le convertisseur de liaison IsChecked est appelé à nouveau lorsque la liaison 'Tag' change. – OrPaz

1

Vous pouvez lier cette source (source ce que vous liant à Tag) directement à Tag et IsChecked, alors vous n'avez pas IsChecked dependend liaison sur Tag et vous ne se soucient condition de course et vous n'avez pas besoin aucun ordre.

+0

Merci. Mais la réponse de Kent a résolu mon problème. Je pense aussi qu'il n'y a pas de conditions de course ici car toutes les propriétés sont des accessoires de dépendance. – OrPaz