Question

J'ai un TabControl xaml et sur une page, il y a 3 boutons radio liés chacun à une propriété différente sur la valeur sélectionnée d'un ListView adjacent. Après avoir basculé entre les éléments sélectionnés dans ListView, mes boutons radio semblent oublier qu'ils sont liés et ne s'actualisent pas.

Alors, en le regardant dans le débogueur, lorsque je passe à un nouvel élément sélectionné, je vois le code non utilisateur qui vérifie d’abord la valeur des 3 propriétés, puis uniquement les deux premières et finalement uniquement le premier. Cependant, si je change d'onglet et que je reviens en arrière, cela semble me donner quelques utilisations supplémentaires.

La reliure elle-même est assez simple. une liaison TwoWay d'une propriété bool à IsChecked. C'est 4 niveaux de profondeur (Path = DataModel.Selected.A.B), mais j'ai d'autres choses à la même profondeur qui fonctionnent bien.

Est-ce quelque chose que les gens ont entendu parler et savent ce qui pourrait se passer? Ou si la liaison est oubliée, y a-t-il un moyen de rappeler explicitement le xaml?

Était-ce utile?

La solution 2

Il s'agit apparemment d'un problème connu:

http: / /social.msdn.microsoft.com/forums/en-US/wpf/thread/8eb8280a-19c4-4502-8260-f74633a9e2f2/

En bref, un bouton radio (via .Net 3.5sp1) tue les liaisons d’autres boutons radio quand il est coché en essayant de désélectionner les autres boutons. La solution simple (read: hack) consiste à attribuer à chaque radiobutton un nom de groupe différent et ensuite, ils n'essayent pas de se gâter

Autres conseils

Il est possible de mettre à jour manuellement les liaisons comme ceci:

TestCheckBox
    .GetBindingExpression(CheckBox.IsCheckedProperty)
    .UpdateTarget();

Cela étant dit, je ne suis pas sûr à 100% que cela corrigera votre problème sous-jacent. Je n'avais jamais eu ce type de problème auparavant avec les liaisons WPF, mais j'ai eu quelques problèmes bizarres avec le contrôle de l'onglet.

Une autre façon de résoudre ce problème consiste à créer une liste de propriétés dans un ListBox et à faire en sorte que le modèle ListBoxItem soit un radiobutton.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top