WPF: Comment pouvez-vous ajouter une nouvelle menuitem un menu au moment de l'exécution?
J'ai une simple application WPF avec un menu. J'ai besoin d'ajouter des éléments de menu dynamiquement à l'exécution. Quand j'ai tout simplement créer un nouvel élément de menu, et de l'ajouter sur son parent MenuItem, il ne s'affiche pas dans le menu, indépendamment de si UpdateLayout est appelé.
Ce qu'il faut faire pour permettre à un menu d'avoir des éléments supplémentaires ajoutés dynamiquement au moment de l'exécution?
Remarque: le code suivant ne fonctionne pas.
MenuItem mi = new MenuItem();
mi.Header = "Item to add";
mi.Visibility = Visibility.Visible;
//addTest is a menuitem that exists in the forms defined menu
addTest.Items.Add(mi);
addTest.UpdateLayout();
À l'heure actuelle, la valeur par défaut des éléments de menu sont définies dans le fichier xaml. Je veux ajouter des éléments de menu supplémentaires sur ce menu et ses éléments de menu existant. Toutefois, comme indiqué, le code ci-dessus ne fait rien.
Vous devez vous connecter pour publier un commentaire.
J'ai réussi à ajouter des éléments de menu à un pré-définis élément de menu.
Dans le code suivant, la LanguageMenu est défini dans la vue de conception dans le xaml, puis ajouté les éléments sous C#.
XAML:
C#:
Je suis tombé sur le même problème. Dans mon cas, le problème était que, dans le XAML de la
<menuitem>
est directement contenue dans un<toolbar>
. Une fois j'ai mis le<menuitem>
à l'intérieur d'un<menu>
il a commencé à travailler. Donc:est mauvais
est bon
J'ai eu à fournir de noms pour les éléments existants, j'ai l'intention de créer dynamiquement des sous-éléments pour les. En outre, j'ai rencontré un problème lorsque je tapais dans le Window_Loaded et il était de sauter hors de l'événement, après l'exécution de cette:
J'ai eu à assurer que j'ai chargé les éléments de menu avant d'exécuter la ligne ci-dessus.
La raison de cette question est probablement commun est parce que intellisense en déduit que les Éléments de la collection est en "Lecture Seule". Cette réponse est partiellement complémentaire parce que les réponses ci-dessus semblent indiquer que, si vous avez des éléments préexistants soit vous devez les supprimer dans le code ou pas du tout. Ce n'est pas vrai. J'ai été en mesure de le faire fonctionner avec d'autres éléments et ajouter de la dynamique des éléments de menu dans le code:
ASP.NET -> Formulaires WEB -> Créer un Menu