Подтвердить что ты не робот

Как вы обрабатываете 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>
4b9b3361

Ответ 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 к свойству на модели вида. Затем в настройщике свойств я вызываю любой настраиваемый код, который я хочу выполнить, т.е. Устанавливая другие свойства на основе правила. Если мне нужен выделенный элемент для привязки к объекту (а также для других связанных элементов управления для обновления), я также установил это в установщике и отправил уведомление.