WPF - всплывающее меню на MouseDown, затем выберите с помощью MouseUp

Я пытаюсь создать UserControl, который ведет себя так:

  • Кнопка для запуска, и когда пользователь нажимает ее и удерживает, появляется радиальное меню
  • Пользователь продолжает удерживать левую кнопку мыши и отпускает на нужном пункте меню
  • Я использую это меню Radial 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. Пункты меню даже не ведут себя так, как будто они наведены (они будут менять цвет).

Есть идеи, как этого добиться?

1 ответ

Я на самом деле получил это с помощью метки вместо кнопки.

Другие вопросы по тегам