Как вы обрабатываете ComboBox SelectionChanged в MVVM?
Для тех, кто делает чистый MVVM, как вы обрабатываете событие ComboBox SelectionChanged без возврата к коду?
Я попробовал, например. AttachedBehaviors, но Event = "SelectedChanged" не поддерживается:
<ComboBox>
<ComboBoxItem Content="Test1">
<c:CommandBehaviorCollection.Behaviors>
<c:BehaviorBinding Event="SelectionChanged"
Command="{Binding SelectedChanged}"
CommandParameter="MainBorder123"/>
</c:CommandBehaviorCollection.Behaviors>
</ComboBoxItem>
<ComboBoxItem Content="Test2"/>
<ComboBoxItem Content="Test3"/>
</ComboBox>
Ответы
Ответ 1
Вы использовали бы триггер данных для запуска события на другом элементе пользовательского интерфейса, например, "включить/отключить или увидеть/невидимый"
Если вы хотите, чтобы выбранный элемент отображал данные объекта в других элементах пользовательского интерфейса, вы использовали привязку данных и установили, что datacontext элементов отображения данных пользовательского интерфейса должен быть привязан к выбранному в данный момент элементу в поле со списком.
Ответ 2
Это сообщение довольно старое, но поскольку у меня такая же проблема. Вот как я его решил (используя фреймворк 4.0): идея заключается в использовании System.Windows.Interactivity.
В XAML:
<ComboBox ItemsSource="{Binding Items}">
<i:Interaction.Triggers>
<i:EventTrigger EventName="SelectionChanged">
<i:InvokeCommandAction Command="{Binding SelectionChangedCommand}"/>
</i:EventTrigger>
</i:Interaction.Triggers>
</ComboBox>
Затем вам просто нужно реализовать SelectionChangedCommand в вашей модели просмотра.
Ответ 3
Я не уверен, что то, что вам нужно, но способ, которым я это делаю, - просто привязать SelectedItem к свойству на модели вида. Затем в настройщике свойств я вызываю любой настраиваемый код, который я хочу выполнить, т.е. Устанавливая другие свойства на основе правила. Если мне нужен выделенный элемент для привязки к объекту (а также для других связанных элементов управления для обновления), я также установил это в установщике и отправил уведомление.