現在、コンテキストメニューをアタッチするRadGridViewがあります。ItemClickイベントをサブスクライブし、そのメソッドでクリックされたものをすべて処理します。これは、RadControls for Silverlight Q2 2012で正常に機能しましたが、 RadControls for Silverlight5 2012 2 0813ホットフィックスを適用した後、機能が部分的に壊れています。
必要な機能はブラウザー内でも機能しますが、ブラウザー(OOB)からアプリケーションを実行する場合、コンテキストメニューを開いた後(GridViewを右クリックして)キーボードの任意の場所をクリックするかキーを押すと、コンテキストメニューが閉じます。クローズイベントは、コンテキストメニューをクリックした後に発生することはなく、コンテキストメニューの外側をクリックした場合にのみ発生します。コンテキストメニューを開くイベントは常にヒットしますが、アイテムのクリックイベントは、アプリケーションがブラウザーで実行されている場合にのみトリガーされます。
メニューを開いたままクリックできるようにする唯一の方法は、ContextMenuプロパティStaysOpenをtrueに設定することですが、このようにメニューを開いたままにしたくありません。RadContextMenuのテーマを確認したところ、これらのTelerikバージョンの両方で同じように見えます。
コードビハインドの例を次に示します(xamlには「grid」という名前の1つの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" });
}
どんな助けや提案も大歓迎です。
ありがとう、ミーシャ