Hi dear Telerik Team,
I'm just facing an issue which took me Hours to (possibly :) ) understand.
I'm using a RadialMenu via RadialContextMenu in a RadGridView. While my RadialMenu did not Hide as it was intended, I guess I can reproduce this in a simple Environment as well:
Usually RadialMenu behaves as inteded.
However if Opening the RadialMenu with MouseRightClick on a ColumnHeader (instead on one of the rows), every intend of hiding that RadialMenu via "RadialMenuCommands.Hide.Execute(null, null);" Fails.
After somehow Closing it (via rightclick on a row), it reopens, however hiding again Fails.
I have just retested in another sample: RadialMenu is especially not Hiding if you just select a cell and without causing any other Events also Right-click same GridCell to open the Radial Button. Now after leaving the RadialMenu it should hide because there is an Event on MouseLeave which is invoking RadialMenuCommands.Hide.Execute(null, null). However that does not take effect.
Am I overseing something? Can you help?
Can't attach my Code. How can I?
4 Answers, 1 is accepted
this is my Code:
<Window
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:TelereikWPFTests"
xmlns:telerik="http://schemas.telerik.com/2008/xaml/presentation" x:Class="TelereikWPFTests.MainWindow"
mc:Ignorable="d"
Title="MainWindow" Height="450" Width="800">
<Grid>
<telerik:RadGridView ItemsSource="{Binding MyData, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=local:MainWindow}}" Margin="25,25,3,25"
AutoGenerateColumns="True" MouseUp="RadGridView_MouseUp" >
<telerik:RadRadialMenu.RadialContextMenu>
<telerik:RadRadialMenu IsOpen="True"
ShowEventName="MouseRightButtonUp"
HideEventName="LostFocus"
PopupPlacement="Mouse"
StaysOpenOnShow="True"
MouseLeave="RadRadialMenu_MouseLeave">
<telerik:EventToCommandBehavior.EventBindings>
<telerik:EventBinding EventName="MouseLeave" Command="{x:Static telerik:RadialMenuCommands.Hide}" />
</telerik:EventToCommandBehavior.EventBindings>
<telerik:RadRadialMenuItem Header="Item 1">
<telerik:RadRadialMenuItem Header="Sub Item 1.1"/>
<telerik:RadRadialMenuItem Header="Sub Item 1.2"/>
<telerik:RadRadialMenuItem Header="Sub Item 1.3"/>
</telerik:RadRadialMenuItem>
<telerik:RadRadialMenuItem Header="Item 2">
<telerik:RadRadialMenuItem Header="Sub Item 2.1"/>
<telerik:RadRadialMenuItem Header="Sub Item 2.2"/>
<telerik:RadRadialMenuItem Header="Sub Item 2.3"/>
</telerik:RadRadialMenuItem>
</telerik:RadRadialMenu>
</telerik:RadRadialMenu.RadialContextMenu>
</telerik:RadGridView>
</Grid>
</Window>
…. and the Code behind:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using Telerik.Windows.Controls;
namespace TelereikWPFTests
{
/// <summary>
/// Interaktionslogik für MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
public List<AnyValues> MyData
{
get
{
var Assets = new List<AnyValues>() {
new AnyValues("ölkö", "weqe", "dasds", "tret"), new AnyValues("ölkö", "weqe", "dasds", "tret"), new AnyValues("ölkö", "weqe", "dasds", "tret"), new AnyValues("ölkö", "weqe", "dasds", "tret")
};
return Assets;
}
}
public class AnyValues
{
public AnyValues(string v1, string v2, string v3, string v4)
{
Value1 = v1; Value2 = v2; Value3 = v3; Value4 = v4;
}
public string Value1 { get; set; }
public string Value2 { get; set; }
public string Value3 { get; set; }
public string Value4 { get; set; }
}
private DependencyObject poppyUp;
private void RadRadialMenu_MouseLeave(object sender, MouseEventArgs e)
{
RadialMenuCommands.Hide.Execute(null, null);
System.Diagnostics.Debug.WriteLine("Sould be Hidden");
}
}
}
Hello Ahmet,
Thank you for the share code snippets.
Please, note that the ShowEventName and HideEventName properties of the RadRadialMenu indicate on which events of its target (in your scenario the RadGridView) it should close. I am assuming that the LostFocus event of the RadGridView is not called when clicking on its cells.
That said, you can utilize the RadialMenuCommands.Hide, however you need to pass as the 2nd parameter the target RadGridView. I am attaching a sample project based on the provided code to demonstrate what I have in mind. Please, check it out and let me know, if it helps.
Regards,
Vladimir Stoyanov
Progress Telerik
Hi Vladimir,
thanks a lot!
This was what I was Looking for:
RadialMenuCommands.Hide.Execute(null, this.gridView);
Kind regards
Ahmet
Hello Ahmet,
I am glad to hear that you found the previous reply helpful.
Don't hesitate to contact us again, if you have any other questions.
Regards,
Vladimir Stoyanov
Progress Telerik