2010-11-06 16 views
1

Je le code suivant:WPF ajouter Dynamiquement 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> 

Je voudrais ajouter dynamiquement des articles à mon panneau de pile à l'intérieur du premier RibbonApplicationMenuItem remplacer les éléments TextBlock qui sont hardcoded. Je ne sais pas combien seront disponibles, je mets 4 comme exemple.

Est-ce possible? Si oui, comment vais-je le faire?

Merci! Eroc

Répondre

0

C'est ce que je l'ai fait dans le XAML, j'ai laissé tomber le panneau de pile:

<!--<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>--> 

Et le code derrière le formulaire:

// 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);  
    } 

J'espère que cela aide tout le monde, il semblait travailler pour moi!