0

データバインドされたリストボックスに表示するオブジェクトのコレクションがあります。リストボックスには、TextBlock を含む StackPanel として定義されたテンプレートが含まれています。TextBlock は、コレクションから境界付けられたデータを示しています。

また、Windows Phone 用の Silverlight ツールキットを使用してコンテキスト メニューを関連付けています。ContextMenu と MenuItems をプログラムで選択した TextBlock に関連付けています。すべてのメニュー項目を独自のクリック イベントで処理しています。

私が直面している問題は、コンテキストメニューからメニュー項目をクリックすると、リストボックスから参照されたコントロールを取得できないことです。つまり、コンテキスト メニューが表示される TextBlock への参照を取得できません。

4

1 に答える 1

0

特定の ContextMenu に関連付けられた要素を取得する方法があると思いますが、見つからないため、回避策を示します。

プログラムで ContextMenu を TextBlock に関連付けていると言っています。次に、すばらしいTag プロパティを使用して、TextBlock への参照を保持できます。リンクで読むことができるように、 Tag は任意のオブジェクトを保持します。コードは次のようになります。

まず、タグをテキストブロックに設定します (私はいくつかの一般的な名前を使用しています)。

menuitem.Tag = textblock;

次に、クリック ハンドラーで、その Textblock を取得します。

var menuItem = sender as MenuItem;
if(menuItem != null && menuItem.Tag is TextBlock)
   var textBlock = menuItem.Tag as TextBlock;

次に、textBlock は ContextMenu を呼び出した TextBlock です。

それが役に立ったことを願っています。

于 2012-06-03T14:55:17.973 に答える