MVVMLightEventToCommand
可以很容易地用于在您的视图模型上触发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
。
当事件是 a (每行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
(仅供参考:我正在做的是我在网格上方有一个面板,它显示鼠标在单击之前所在行的详细信息 - 这会触发详细视图)。