コンテキスト メニューを wpf コントロールにアタッチし、(より慣習的な右クリックではなく) 左クリックで開くことは可能ですか? xaml のみを使用してそれを実現したい (これは、コントロールのビュー テンプレートの一部である必要があります)。
12764 次
3 に答える
7
左クリックでコンテキストメニューを表示する方法は次のとおりです。
Border
要素に新しい左ボタン ハンドラーを作成します。
<Border x:Name="Win"
Width="40"
Height="40"
Background="Purple"
MouseLeftButtonUp="UIElement_OnMouseLeftButtonUp">
そして、これを追加します:
private void UIElement_OnMouseLeftButtonUp(object sender, MouseButtonEventArgs e)
{
e.Handled = true;
var mouseDownEvent =
new MouseButtonEventArgs(Mouse.PrimaryDevice,
Environment.TickCount,
MouseButton.Right)
{
RoutedEvent = Mouse.MouseUpEvent,
Source = Win,
};
InputManager.Current.ProcessInput(mouseDownEvent);
}
それが何をするか、それは基本的に左クリックを右クリックにマップします。再利用性のために、これをアタッチされた動作にラップできます。
于 2014-12-29T18:43:04.570 に答える
4
これが私が提案していることの簡単な例をどのように行うかです:
XAML:
<Window x:Class="LeftClickMenu.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow">
<Grid>
<Border Width="400" Height="300" Background="#ccc" BorderBrush="#333"
BorderThickness="1"
MouseLeftButtonDown="Border_MouseLeftButtonDown"
MouseRightButtonUp="Border_MouseRightButtonUp">
<Border.ContextMenu>
<ContextMenu x:Name="myContextMenu">
<MenuItem Header="Menu Item 1" />
<MenuItem Header="Menu Item 2" />
<MenuItem Header="Menu Item 3" />
<MenuItem Header="Menu Item 4" />
<MenuItem Header="Menu Item 5" />
</ContextMenu>
</Border.ContextMenu>
</Border>
</Grid>
</Window>
そして、コードビハインド:
using System.Windows;
using System.Windows.Input;
namespace LeftClickMenu
{
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
private void Border_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
myContextMenu.IsOpen = true;
}
private void Border_MouseRightButtonUp(object sender, MouseButtonEventArgs e)
{
e.Handled = true;
}
}
}
また、コンテキストメニューの右クリックポップアップを禁止するために、MouseRightButtonUpイベントを追加しました。
于 2012-07-19T21:45:46.450 に答える
0
この SO 記事に記載されているように、プログラムでサブメニューを開くメソッドを作成します: WPF でプログラムによってメニューを表示する
LeftMouseButtonDown のイベントを作成し、XAML でそのイベントを呼び出します。
于 2012-07-17T00:59:03.733 に答える