MVVMLightEventToCommand
を使用しICommand
て、viewmodel を非常に簡単に起動できます。
<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
(FYI: 私がやっていることは、グリッドの上に、クリックする前にマウスが置かれている行の詳細を表示するパネルがあることです。これにより、詳細ビューがトリガーされます)。