WPFでDataGridにContextMenuを追加する場合、
1 2 3 4 5 6 |
<DataGrid.ContextMenu> <ContextMenu> <MenuItem Header="Forward" Click="Forward_click"/> <MenuItem Header="Back" Click="Back_click"/> </ContextMenu> </DataGrid.ContextMenu> |
と書きますが、DataGridRowにContextMenuを対応させる場合、DataGrid.RowStyleしかないため、
1 2 3 4 5 6 7 8 9 10 11 12 |
<DataGrid.RowStyle> <Style TargetType="DataGridRow"> <Setter Property="ContextMenu"> <Setter.Value> <ContextMenu > <MenuItem Header="Forward" Click="Forward_click"/> <MenuItem Header="Backward" Click="Back_click"/> </ContextMenu> </Setter.Value> </Setter> </Style> </DataGrid.RowStyle> |
と書くと、
1 |
'Forward_click' は無効です。'Click' は 'System.Windows.Controls.DataGridTextColumn' のイベントではありません。 |
とちょっと意味不明なエラーがでます。ここでMenuItemでのイベントを処理するために、Clickイベントの代わりにCommandでの例が紹介されているのが普通かと思うのですが、今回はコードビハインド的な書き方をする例を下記のとおりに示します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
<DataGrid.RowStyle> <Style TargetType="DataGridRow"> <EventSetter Event="MouseDoubleClick" Handler="GridRow_DoubleClick"/> <Setter Property="ContextMenu"> <Setter.Value> <ContextMenu > <MenuItem Header="Forward"> <MenuItem.Style> <Style TargetType="MenuItem"> <EventSetter Event="Click" Handler="forward_Click"/> </Style> </MenuItem.Style> </MenuItem> <MenuItem Header="Backword"> <MenuItem.Style> <Style TargetType="MenuItem"> <EventSetter Event="Click" Handler="back_Click"/> </Style> </MenuItem.Style> </MenuItem> </ContextMenu> </Setter.Value> </Setter> </Style> </DataGrid.RowStyle> |
スタイル指定内部でさらにスタイル指定するという、見通しが悪い書き方になりますが、一例まで。