Как использовать события 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