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

ラジアル メニューは問題なくポップアップしますが、RadialMenuItems で PreviewMouseLeftButtonUp イベントが発生しません。メニュー項目は、マウスオーバーされているように動作しません (色が変わります)。

これを達成する方法についてのアイデアはありますか?

4

1 に答える 1

0

ボタンの代わりにラベルを使用して、実際にこれを機能させました。

于 2016-04-05T12:56:29.920 に答える