我目前有一个附加上下文菜单的 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" });
}
任何帮助或建议将不胜感激。
谢谢,米莎