Как использовать события WPF DataGridRow с Interaction.Triggers / MVVM EventToCommand

MVVMLight EventToCommand может быть использован для стрельбы ICommand на ваш взгляд модель довольно легко.

<DataGrid>
    <i:Interaction.Triggers>
        <i:EventTrigger EventName="SelectionChanged">
            <GalaSoft_MvvmLight_Command:EventToCommand
                Command="{Binding ProductSelectionChangedCommand, Mode=OneWay}    "
                CommandParameter="{Binding SelectedItems, ElementName=gridProducts}" />
        </i:EventTrigger>
    </i:Interaction.Triggers>
</DataGrid>

В этом случае SelectionChanged событие принадлежит DataGrid и Interaction.Triggers XAML вложен прямо внутрь DataGrid,

Я не могу понять, как сделать то же самое, когда событие DataGridRow (который имеет свои события для каждой строки).

Мне удалось сделать это, но это включает в себя функцию-обработчик, которую я хотел бы избежать:

<DataGrid>
    <DataGrid.ItemContainerStyle>
        <Style TargetType="DataGridRow">
            <EventSetter Event="DataGridRow.MouseEnter" 
                         Handler="Row_MouseEnter"/>
        </Style>
    </DataGrid.ItemContainerStyle>
</DataGrid>

в Row_MouseEnter Событие (в моем файле.xaml.cs). Я просто "нахожу команду" во ViewModel и запускаю ее программно.

Мне бы очень хотелось знать, есть ли способ сделать то же самое непосредственно с Interaction.Triggers

(К вашему сведению: у меня есть панель над сеткой, которая отображает детали строки, над которой находится мышь, прежде чем щелкнуть на ней - что вызывает подробный вид).

1 ответ

Да, вы можете напрямую привязать команду к вашей ViewModel, создав свой собственный behaviour class и используя его в файле xaml. Эти ссылки могут помочь вам начать - связывание с использованием интерактивности и связывание через взаимодействие в MVVM

Другие вопросы по тегам