0

独自のコンテキスト メニューを生成して設定し、項目を次のようにサブメニューにグループ化します。

SubTitle.Items.Add(..);

これらのポップアップ サブメニューは正常に動作し、ほとんどすべてが適切です..しかし...

MenuItem ロール (スタイルのトリガーごとに設定できます) を TopLevelHeader などに設定しない限り、サブメニューの三角形を表示できません。

MenuItem.Role には直接のセッターがないため、サブメニューの MenuItems を XAML 静的オブジェクトとして作成し、素敵なスタイルを付与して、サブメニューの三角形も取得する必要があります。

問題は、コンテキスト メニューが DB などから完全にプログラム的に派生していることです。静的な XAML MenuItem を再利用する場合、ガベージ コレクターをそれらに設定して、それらを再利用する前に親関係を壊す必要があります。また、これらの要素を知らなければなりません。あらかじめ。

次の方法はありますか?

MenuItemThatIsTitle.Role = MenuItemRole.TopLevelHeader; 
//(in order to get the triangle?)

..コードから?

===

コード例 - コードからコンテキスト メニューにサブメニューを追加する:

            contextM.Items.Add(new Separator());
            var TitleH = new MenuItem
            {
                    Header = SettingsDomain.Default.TitleHeader,
                    FontWeight = FontWeights.Bold,
                    Height = 25,
                    IsEnabled = true,
            };

            if (!(TitleH.Items.Count > 0))
            //TitleH.Role = MenuItemRole.TopLevelHeader; to get the triangle..
            {
                var listmen = List.Select(c => cMenuItem(c)).ToList();
                TitleH.ItemsSource = listmen;
            }

            contextM.Items.Add(TitleH);
            contextM.Items.Add(new Separator());

注意: 関連する XAML はありません

4

1 に答える 1

0

解決策: メニューの幅を適切な幅に設定しないでください。メニューの右側がサブメニュー マーク (三角形) と一緒に切り取られ、消えてしまいます。

于 2013-10-01T09:05:12.917 に答える