2010-11-06 101 views
1

我有以下代码:WPF动态添加RibbonApplicationMenuItem(S)

<ribbon:Ribbon.ApplicationMenu> 
     <ribbon:RibbonApplicationMenu ToolTipTitle="Application Menu"> 
      <ribbon:RibbonApplicationMenuItem Header="Company" 
               x:Name="MenuItem_Company" 
               ImageSource="Images\LargeIcon.png" 
               Command="{Binding Path=CompanyCommand}"> 
       <StackPanel>        
        <TextBlock Text="Item 1 in the list" /> 
        <TextBlock Text="Item 2 in the list" /> 
        <TextBlock Text="Item 3 in the list" /> 
        <TextBlock Text="Item 4 in the list" /> 
       </StackPanel> 
      </ribbon:RibbonApplicationMenuItem> 

      <ribbon:RibbonApplicationMenuItem Header="DocStore Settings" 
               x:Name="MenuItem1" 
               ImageSource="Images\LargeIcon.png" 
               Click="MenuItem1_Click"/> 
      <ribbon:RibbonApplicationMenuItem Header="About DocStore" 
               x:Name="MenuItem2" 
               ImageSource="Images\LargeIcon.png" 
      Click="MenuItem2_Click" /> 
      <ribbon:RibbonApplicationMenuItem Header="Exit" 
               x:Name="MenuExit" 
               ImageSource="Images\LargeIcon.png" 
      Click="Exit" />        
     </ribbon:RibbonApplicationMenu> 
    </ribbon:Ribbon.ApplicationMenu> 

我想动态地添加项目到我的堆叠面板第一RibbonApplicationMenuItem替换是硬编码将TextBlock里面的物品。我不知道有多少可用,我以4为例。

这可能吗?如果是这样,我该如何去做呢?

谢谢! Eroc

回答

0

这是我在XAML一样,我放弃了堆叠面板:

<!--<StackPanel x:Name="CompanyStackPanel">        
    <TextBlock Text="Item 1 in the list" /> 
    <TextBlock Text="Item 2 in the list" /> 
    <TextBlock Text="Item 3 in the list" /> 
    <TextBlock Text="Item 4 in the list" /> 
</StackPanel>--> 

和窗体后面的代码:

// ToDo: Create interface to populate the mymenutems 
    List<string> mymenuitems = new List<string>(); // = someinterface 
    mymenuitems.Add("Test Menu 1"); 
    mymenuitems.Add("Test Menu 2"); 
    mymenuitems.Add("Test Menu 3"); 
    mymenuitems.Add("Test Menu 4"); 
    foreach (var item in mymenuitems) 
    { 
    var margins = new Thickness(2); 
    var newtextbox = new Label() { Margin = margins, Content = item}; 
    MenuItem_Company.Items.Add(newtextbox);  
    } 

我希望这有助于大家,它似乎为我工作!