すべてのメニュー項目のイベントをキャプチャしようとしてContextMenu
います。そのようです:DataGrid
MenuItem.Click
<DataGrid Name="dataGridMembers" Grid.Row="1" Grid.ColumnSpan="15"
AutoGenerateColumns="False" SelectionMode="Single"
ItemsSource="{Binding MemberList}" RowHeaderWidth="5"
MouseDoubleClick="dataGridMembers_MouseDoubleClick"
MenuItem.Click="NewReservationContextMenuClick">
<DataGrid.ContextMenu>
<ContextMenu Name="GridMenu">
<MenuItem
Name="AddSponsoredSingle"
Header="Add Sponsored Single" />
<Separator />
<MenuItem
Name="EditNote"
Header="Add/Edit Note" />
<Separator />
<MenuItem
Name="AddMale"
Header="Add Male" />
<MenuItem
Name="AddFemale"
Header="Add Female"/>
<MenuItem
Name="AddCouple"
Header="Add Couple"/>
</ContextMenu>
</DataGrid.ContextMenu>
<DataGrid.Columns>
...
</DataGrid.Columns>
</DataGrid>
問題は、イベントが発生しないことです。MenuItem.Click
はバブル イベントであると想定されており、ビジュアル ツリーのどこでもキャッチできるはずです。
私は何を間違っていますか?
編集:コードにハンドラーを追加すると正常に動作します。.xaml.cs
and allのコンストラクター内の次の行は適切です。
GridMenu.AddHandler(MenuItem.ClickEvent, new RoutedEventHandler(NewReservationContextMenuClick));