2013-09-30 50 views
0

我生成並設置自己的上下文菜單和團體項目進入子菜單按如何從MenuItem的代碼打開子菜單三角形?

SubTitle.Items.Add(..); 

這些彈出子菜單做工精細,幾乎都是不錯..但是...

我不能讓子菜單三角形顯示除非我設置MenuItem角色(您可以設置每個觸發器的樣式)爲例如TopLevelHeader等

MenuItem.Role沒有直接的setter,所以我將不得不創建我的子菜單MenuItems作爲XAML靜態對象,然後賦予不錯的樣式,所以他們也會得到子菜單三角形。

問題是,我的上下文菜單完全由編程方式派生,例如,一個數據庫,如果我重新使用靜態XAML MenuItems我需要設置垃圾收集器到他們打破父母的關係,纔可以重用他們,和/或我必須事先不知道這些元素。

有一些辦法:

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

..from的代碼?

===

示例代碼 - 從代碼添加一個子菜單上下文菜單:

  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()); 

NB:沒有相關XAML

+0

什麼?你爲什麼不用'ItemsSource'來代替?你試圖讓WPF符合你的意願,這是無法完成的。這是相反的方式。 –

+0

以及我現在嘗試你的建議,並將項目添加到列表,然後我給了ItemsSource ...作品一樣,沒有三角形出現? – Ulthien

+0

發佈相關代碼和XAML。 –

回答

0

解決方案:不菜單的寬度設置爲某個整齊的寬度,它會切斷菜單的右側,與子菜單標記(三角形)完全消失。