WPF Agregar dinámicamente RibbonApplicationMenuItem (s)
-
29-09-2019 - |
Pregunta
Tengo el siguiente código:
<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>
Me gustaría añadir dinámicamente artículos a mi panel de pila dentro de la primera RibbonApplicationMenuItem sustituir los elementos TextBlock que están codificados. No sé cuántos estarán disponibles, puse 4 como ejemplo.
¿Es esto posible? Si es así, ¿cómo hago para hacerlo?
Gracias! Eroc
Solución
Esto es lo que hice en el XAML, se me cayó el panel de pila:
<!--<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>-->
Y el código detrás de la forma:
// 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);
}
Espero que esto ayuda a todos, parece que ha funcionado para mí!
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow