1

我正在尝试创建一个行为如下的 UserControl:

  • 一个按钮开始,当用户单击并按住它时,会出现一个径向菜单
  • 用户一直按住鼠标左键,然后在他们想要的菜单项上释放
  • 我正在使用这个径向菜单https://github.com/Julien-Marcou/RadialMenu

这是我的尝试:

<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!");
    }

径向菜单弹出正常,但 PreviewMouseLeftButtonUp 事件不会在 RadialMenuItems 上触发。菜单项的行为甚至不像被鼠标悬停(它们会改变颜色)。

关于如何做到这一点的任何想法?

4

1 回答 1

0

我实际上是使用标签而不是按钮来完成这项工作的。

于 2016-04-05T12:56:29.920 回答