none
リソースのContextMenuにC#コードから動的に追加した項目のHeaderを取得したい RRS feed

  • 質問

  • Xamlの"Window.Resources"にあるContextMenuに、C#コードから動的に追加した項目のHeaderを取得したいのですが、どうすればいいのでしょうか?

    下のコードを書いてみましたが親の方のHeaderが取得されてしまいました。

            <ContextMenu>
                <MenuItem x:Name="_1" Header="1">
                    <MenuItem x:Name="_1-1" Header="1-1"/>  <--このHeaderを取得したい(動的に追加した項目)
                </MenuItem>

            </ContextMenu>

    ---------------------------------------------------------------------------

    ((MenuItem)sender).Header.ToString();  <--"1"が取得されました。

    2019年2月19日 7:59

回答

  • 説明不足でした。どのファイルでではなく、おそらくイベントハンドラで実行されていると思うのですが、メニューのイベントハンドラであればメニューがsenderに、サブメニューのイベントハンドラならサブメニューがsenderにセットされます。
    つまり、サブメニューのイベントハンドラであればsenderにはサブメニューがセットされますので、サブメニューのヘッダを取得することができます。

    ★良い回答には質問者は回答済みマークを、閲覧者は投票を!

    • 回答としてマーク ttkk_737 2019年3月20日 12:51
    2019年2月20日 12:57
    モデレータ

すべての返信

  • コードはそれで良いと思いますが、そのコードをどこで実行されていますか?

    ★良い回答には質問者は回答済みマークを、閲覧者は投票を!

    2019年2月20日 1:08
    モデレータ
  • XamlはMainWindow.xamlで、C#コードはMainWindow.xaml.csで実行しています。
    • 回答としてマーク ttkk_737 2019年2月20日 11:37
    • 回答としてマークされていない ttkk_737 2019年2月20日 11:37
    2019年2月20日 11:31
  • 説明不足でした。どのファイルでではなく、おそらくイベントハンドラで実行されていると思うのですが、メニューのイベントハンドラであればメニューがsenderに、サブメニューのイベントハンドラならサブメニューがsenderにセットされます。
    つまり、サブメニューのイベントハンドラであればsenderにはサブメニューがセットされますので、サブメニューのヘッダを取得することができます。

    ★良い回答には質問者は回答済みマークを、閲覧者は投票を!

    • 回答としてマーク ttkk_737 2019年3月20日 12:51
    2019年2月20日 12:57
    モデレータ