/ /マウスボタンが押されたときにContextMenuを作成する方法 - c#、wpf

マウスボタンが押されたときにContextMenuを作成する方法 - c#、wpf

私は右マウスボタンイベントを発生させるDataGridのコードを作成しました:

private void Squadre_DataGrid_MouseClick(object sender, MouseEventArgs e)
{
if (e.RightButton == MouseButtonState.Pressed)
{
//Context menu

}
}

私は、条件の中にContextMenuを作成し、ContextMenuの各項目に対して、その項目が選択される場合に実行されるメソッドを関連付ける必要があります。 これを行う方法?

回答:

回答№1は1

おそらく、XAMLでそれを達成することができます。 DataGridの行のコンテキストメニューを使用する場合は、DataGridRowにContextMenuプロパティを追加できます。たとえば、次のようにします。

<DataGrid>
<DataGrid.RowStyle>
<Style TargetType="DataGridRow">
<Setter Property="ContextMenu" Value="{StaticResource theContextMenu}" />
</Style>
</DataGrid.RowStyle>
</DataGrid>

コンテキストメニュー自体をリソース辞書に追加します。

<Window.Resources>
<ResourceDictionary>
<ContextMenu x:Key="theContextMenu">
<MenuItem Header="Menu Item 1" Click="menuItem1_Click">
</MenuItem>
<MenuItem Header="Menu Item 2" Click="menuItem2_Click">
</MenuItem>
</ContextMenu>
</ResourceDictionary>
</Window.Resources>

次に、メソッドを実行するためのメニュー項目ごとにクリックイベントハンドラを作成します。

private void menuItem1_Click(object sender, RoutedEventArgs e)
{
// execute your method..
}

private void menuItem2_Click(object sender, RoutedEventArgs e)
{
// execute your method..
}

回答№2の場合は0

datacontextコンテンツをプロパティにバインドし、ButtonイベントのIt(propertie)を埋めることができます。 Contextmenuバインディング(xaml)で更新条件を設定するのを忘れないでください。


回答№3の場合は0

私の見解では、この作業の最善の方法は、 ContextMenu 各行の DataGrid私たちは次のようにそれを行うことができます:

の中に XAML、あなたの場所に置く DataGrid イベントのリスナー LoadingRow

<!-- resume version of declaration your DataGrid -->
<DataGrid x:Name="Squadre_DataGrid" LoadingRow="Squadre_DataGrid_LoadingRow" />

の中に CodeBehind、追加してください ContextMenu 各行について:

private void Squadre_DataGrid_LoadingRow(object sender, DataGridRowEventArgs e)
{
ContextMenu _contextMenu = new ContextMenu();
MenuItem mia = new MenuItem();//item 1
MenuItem mib = new MenuItem();//item 2
....
_contextMenu.Add(mia);
_contextMenu.Add(mib);
....
e.Row.ContextMenu = _contextMenu;//add context menu to row
}