0

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

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

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

这是后面的代码示例(xaml 包含 1 个名为“grid”的网格视图):

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

任何帮助或建议将不胜感激。

谢谢,米莎

4

1 回答 1

1

这个问题在Telerik 论坛上得到了回答。

我最终通过在网格中单击鼠标右键时使用 StaysOpen=True 属性手动解决了这个问题。然后我在单击一个项目时手动关闭上下文菜单。

于 2012-09-24T01:53:00.537 回答