简体   繁体   English

WPF-MouseDown上的弹出菜单,然后使用MouseUp选择

[英]WPF - Popup Menu on MouseDown, then select with MouseUp

I am trying to create a UserControl that behaves like so: 我正在尝试创建一个行为如下的UserControl:

  • A button to start with, and when a user clicks it and holds, a Radial menu appears 一个开始的按钮,当用户单击并按住时,会出现一个径向菜单
  • User keeps holding left mouse, and releases on the menu item they want 用户持续按住鼠标左键,并在他们想要的菜单项上释放
  • I am using this Radial menu https://github.com/Julien-Marcou/RadialMenu 我正在使用此Radial菜单https://github.com/Julien-Marcou/RadialMenu

Here is my attempt: 这是我的尝试:

<UserControl x:Class="NetBoard.RadialButton"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
             xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
             xmlns:local="clr-namespace:NetBoard"
             xmlns:radial="clr-namespace:RadialMenu.Controls;assembly=RadialMenu"
             mc:Ignorable="d" >
    <Grid>
        <Button Name="Button"
                PreviewMouseDown="Button_MouseDown" 
                PreviewMouseUp="Button_MouseUp" />

        <radial:RadialMenu Name="RadialMenu" />
    </Grid>
</UserControl>
public partial class RadialButton : UserControl
{
    public RadialButton()
    {
        InitializeComponent();

        // Test menu items
        for (int i = 0; i < 3; i++)
        {
            RadialMenu.Content.Add(new RadialMenuItem { Content = i });
        }

        foreach (RadialMenuItem item in RadialMenu.Content)
        {
            item.PreviewMouseLeftButtonUp += Slice_MouseUp;
        }
    }

    private void Button_MouseDown(object sender, MouseButtonEventArgs e)
    {
        RadialMenu.IsOpen = true;
    }

    private void Button_MouseUp(object sender, MouseButtonEventArgs e)
    {
        RadialMenu.IsOpen = false;
    }

    private void Slice_MouseUp(object sender, MouseButtonEventArgs e)
    {
        MessageBox.Show("It worked!");
    }

The radial menu pops up fine, but the PreviewMouseLeftButtonUp event does not fire on the RadialMenuItems. 弹出的径向菜单很好,但是RadialMenuItems上的PreviewMouseLeftButtonUp事件不会触发。 The Menu Items don't even behave like they are being moused-over (they would change color). 菜单项的行为甚至不会像被鼠标悬停一样(它们会更改颜色)。

Any ideas on how to accomplish this? 有关如何实现这一目标的任何想法?

我实际上使用Label而不是按钮来实现这一点。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM