Ich versuche, einen Usercontrol zu schaffen, wie so verhält:WPF - Popup-Menü auf MouseDown-, wählen Sie dann mit MouseUp
- Eine Schaltfläche mit zu beginnen, und wenn ein Benutzer darauf klickt, und hält ein Radial-Menü ich bin mit diesem Radial Menü https://github.com/Julien-Marcou/RadialMenu
Hier ist mein Versuch:
<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!");
}
Das Radialmenü erscheint in Ordnung, aber das PreviewMouseLeftButtonUp Ereignis auf der RadialMenuItems nicht ausgelöst. Die Menüeinträge verhalten sich nicht einmal so, als würden sie mit der Maus bewegt (sie würden ihre Farbe ändern).
Irgendwelche Ideen, wie dies zu erreichen ist?
Klingt so, als müssten Sie den Autor der von Ihnen verwendeten 'RadialMenu'-Klasse kontaktieren. Sie fragen viel nach und erwarten, dass die Stack Overflow-Community eine Bibliothek eines Drittanbieters herunterlädt und Ihr Problem damit diagnostiziert. Wie es scheint, ist es wahrscheinlich, dass Sie auf ein Problem mit der Mauserfassung stoßen, bei dem etwas anderes ausschließlich Mausereignisse erhält und verhindert, dass Ihre Menüelemente etwas sehen. Aber vermutlich hat der Autor der 'RadialMenu'-Klasse einen beabsichtigten Mechanismus zum Auswählen von Menüpunkten. –
Ich war gelangweilt und fasziniert von der radialen Kontrolle. Ihr Code funktioniert in der von mir erstellten Lösung einwandfrei. Also meine Vermutung ist, dass dein Problem woanders liegt. Sie haben gesagt, dass die mouseover-Zustände nicht funktionieren. Haben Sie vielleicht eine transparente Kontrolle über das radiale Menü? –