2011-05-06 84 views
1

我想要一个图像(在WPF中),当鼠标左键单击时显示一个菜单。它在7中正常工作,但是,当我尝试在XP中使用它时,它仅在右键单击时显示。有任何想法吗?图像的菜单没有在左键点击XP打开

这里是XAML代码:

<Image x:Name="buttonHelp" Width="32" Height="32" Margin="0,0,5,0" Source="/Little Registry Optimizer;component/Resources/Help.png" MouseEnter="button_MouseEnter" MouseLeave="button_MouseLeave" MouseDown="buttonHelp_MouseLeftButtonDown" /> 

下面是C#代码:

private void button_MouseEnter(object sender, System.Windows.Input.MouseEventArgs e) 
{ 
    this.Cursor = Cursors.Hand; 
} 

private void button_MouseLeave(object sender, System.Windows.Input.MouseEventArgs e) 
{ 
    this.Cursor = Cursors.Arrow; 
} 

private void buttonHelp_MouseLeftButtonDown(object sender, MouseButtonEventArgs e) 
{ 
    ContextMenu contextMenu = new ContextMenu(); 
    this.buttonHelp.ContextMenu = contextMenu; 

    contextMenu.Items.Add(CreateMenuItem(Properties.Resources.Help, "Help")); 
    contextMenu.Items.Add(new Separator()); 
    contextMenu.Items.Add(CreateMenuItem(Properties.Resources.internet, "Visit Website")); 
    contextMenu.Items.Add(CreateMenuItem(Properties.Resources.update, "Check for updates")); 
    contextMenu.Items.Add(new Separator()); 
    contextMenu.Items.Add(CreateMenuItem(Properties.Resources.optimizer, "About...")); 

    contextMenu.PlacementTarget = (System.Windows.UIElement)sender; 
    contextMenu.IsOpen = true; 
    contextMenu.StaysOpen = true; 
} 

谢谢!

+1

只是为了确保(你应该已经认识),但在XP下鼠标未配置为左手工用法? – ZoolWay 2011-05-06 07:06:19

+0

如果您在MouseLeftButtonDown事件中设置了断点,它会被触发吗? – 2011-05-06 15:23:51

回答

0

只要你知道我已经通过使用按钮而不是图像来解决这个问题。您仍然可以设置按钮以将图像作为其内容。然后,你可以简单地订阅Buttons Click事件(我知道它会在XP或其他任何事情上工作)。

我所做的就是设置的上下文菜单中使用此代码放置的另一件事:

buttonHelp.ContextMenu.Placement = System.Windows.Controls.Primitives.PlacementMode.Bottom; 
ContextMenuService.SetPlacement(buttonHelp, System.Windows.Controls.Primitives.PlacementMode.Bottom); 
+0

谢谢!我将其更改为一个按钮,并更改了控件模板,使其显示图像(不带任何边框或任何其他内容),并且工作正常。这是代码:http://bazaar.launchpad.net/~lrc-team/lilregdefrag/devel-1.0/revision/5 – ub3rst4r 2011-05-07 05:45:53