The MVVMLight EventToCommand
can be used to fire an ICommand
on your viewmodel quite easily.
<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>
In this instance the SelectionChanged
event belongs to DataGrid
, and the Interaction.Triggers
xaml is nested directly inside DataGrid
.
I cannot figure out how to do the same when the event is a DataGridRow
(which has its own events for each row).
I managed to do this, but it involves a handler function which I'd like to avoid :
<DataGrid>
<DataGrid.ItemContainerStyle>
<Style TargetType="DataGridRow">
<EventSetter Event="DataGridRow.MouseEnter"
Handler="Row_MouseEnter"/>
</Style>
</DataGrid.ItemContainerStyle>
</DataGrid>
In the Row_MouseEnter
event (on my .xaml.cs file) I just 'find the command' on the ViewModel and trigger it programatically.
I'd really like to know if there's a way of doing the same directly with Interaction.Triggers
(FYI: What I'm doing is I have a panel above the grid which displays details of the row that the mouse is over before clicking on it - which triggers a detail view).