0

現在、コンテキストメニューをアタッチする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" });
}

どんな助けや提案も大歓迎です。

ありがとう、ミーシャ

4

1 に答える 1

1

この質問はTelerikフォーラムで回答されました。

グリッドを右クリックしたときにStaysOpen=Trueプロパティを使用して、この問題を手動で修正することになりました。次に、アイテムをクリックしてコンテキストメニューを手動で閉じました。

于 2012-09-24T01:53:00.537 に答える