应用Telerik Q2修补程序后无法单击Telerik上下文菜单

时间:2012-08-23 22:22:37

标签: c# silverlight telerik contextmenu radgridview

我目前有一个RadGridView,我附上了一个上下文菜单。我订阅了ItemClick事件并处理在该方法中单击的任何内容。这适用于Silverlight Q2 2012的 RadControls ,但在应用 RadControls for Silverlight5 2012 2 0813修补程序之后,功能部分被破坏。

我想要的功能仍然可以在浏览器中运行,但是当从浏览器(OOB)运行应用程序时,在打开上下文菜单(通过右键单击GridView)后单击任意位置或按键盘上的键会导致上下文菜单关闭单击上下文菜单后,关闭的事件永远不会被触发,只有在上下文菜单外单击时才会触发它。上下文菜单打开事件总是被命中,但项目点击事件仅在应用程序在浏览器中运行时触发。

我能够保持菜单打开并且可以单击的唯一方法是将ContextMenu属性StaysOpen设置为true,但我不希望菜单保持打开状态。我检查了RadContextMenu的主题,它们在这两个Telerik版本中看起来都相同。

以下是代码背后的示例(xaml包含1个名为'grid'的gridview):

 public MainPage() {
  InitializeComponent();
  RadContextMenu contextMenu = new RadContextMenu { FontSize = 10 };
  contextMenu.Opening += ContextMenuOpeningHandler;
  contextMenu.ItemClick += ContextMenuItemClickHandler;
  StyleManager.SetTheme(contextMenu, StyleManager.GetTheme(grid));
  RadContextMenu.SetContextMenu(grid, contextMenu);
}

private void ContextMenuItemClickHandler(object sender, RadRoutedEventArgs e) {
   new RadWindow { Content = "Item Clicked!" }.ShowDialog();
}

private void ContextMenuOpeningHandler(object sender, RadRoutedEventArgs e) {
  RadContextMenu contextMenu = (RadContextMenu)sender;
  contextMenu.IsEnabled = true;
  contextMenu.Items.Clear();
  contextMenu.Items.Add(new RadMenuItem { Header = "item 1" });
  contextMenu.Items.Add(new RadMenuItem { Header = "item 2" });
}

非常感谢任何帮助或建议。

谢谢, 米莎

1 个答案:

答案 0 :(得分:1)

Telerik Forums已回答了这个问题。

我最终在右键单击网格时使用StaysOpen = True属性手动修复此问题。然后我点击一个项目手动关闭上下文菜单。