2017-07-28 6 views
0

Lors de l'utilisation ComboBox ou d'autres contrôles qui ont ItemsSource et SelectedItem liaisons de propriété, alors chaque fois lors de la liaison initiale au cours de l'exécution et également chaque fois que la limite collection à ItemsSource changements Je constate que le contenu de l'objet SelectedItem lié est modifié.contrôles WPF, désactiver les modifications à `SelectedItem` lorsqu'il est lié propriété à` ItemsSource` change

Comment puis-je désactiver cela?

Par exemple:

Je <ComboBox MinWidth="300" ItemsSource="{Binding AvailableMasters}" SelectedItem="{Binding SelectedMaster}">

Quand je lance l'application de la propriété SelectedMaster est attribué le premier élément de AvailableMasters. En outre, chaque fois que la collection AvailableMasters change (par exemple, en affectant une nouvelle collection à la propriété) le SelectedMaster est de nouveau ajusté.

Le comportement souhaité est que SelectedItem (SelectedMaster) est seulement peuplée/changé lorsque l'utilisateur final clique avec la souris sur ce point/choisit que l'élément de la ComboBox ou un autre contrôle.

+0

Avez-vous essayé une liaison OneWayToSource sur la propriété SelectedItem? – Clemens

+0

Si vous souhaitez définir une seule fois au démarrage, utilisez le mode de liaison une seule fois. Plus tard, la sélection changera uniquement sur la sélection de l'utilisateur. Etes-vous sûr que les masters sélectionnés ne changent pas lors de la modification des masters disponibles? Si tel est le cas ne pas augmenter la propriété a changé l'événement des maîtres disponibles jusqu'à ce que non requis. – Ramankingdom

+0

@Ramankingdom, je crains que vous ayez mal compris. Je ne veux pas que SelectedItem soit affecté lorsque la propriété liée à ItemsSource est modifiée. –

Répondre

1

Définissez une propriété flag/bool avant de mettre à jour la collection et utilisez-la dans la propriété SelectedMaster. Ou avez-vous seulement besoin de la solution XAML?

+0

Cela pourrait fonctionner comme une solution de dernier recours. J'utilise mvvm donc je peux facilement définir de tels drapeaux dans les propriétés liées –

+0

J'ai choisi votre réponse car elle permet plus de flexibilité en termes de liaison bidirectionnelle plutôt que de restreindre la liaison à 'OneWayToSource'. –