独自のコンテキスト メニューを生成して設定し、項目を次のようにサブメニューにグループ化します。
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 はありません