Ich habe viel Zeit damit verbracht, StackOverflow und Google zu durchsuchen, bevor ich diese Frage gestellt habe, und ich konnte nichts besonders nützlich finden. Ich bin auf der Suche nach einer Anleitung zum Laden eines Menüs aus einer kompilierten Xaml-Datei und zum Anhängen an ein Menu-Steuerelement. Ich bin ein WPF-Neuling, also bitte bitte mit mir.Wie können Sie in WPF ein Menü aus einer Ressource laden?
In meiner Seite habe ich die folgende XAML:
<Menu ItemsSource="{Binding MainMenu}">
</Menu>
Meine Ansicht Modellklasse sieht derzeit wie folgt:
public class MainWindowViewModel : ViewModelBase
{
public ItemCollection MainMenu { get; set; }
public MainWindowViewModel()
{
Menu m = (Menu)Application.LoadComponent(new Uri("/Assets/Menus/StartupShellMenu.xaml", UriKind.Relative));
MainMenu = m.Items;
}
}
Die StartupShellMenu.xaml Datei sieht so aus:
<Menu xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<MenuItem Header="_File">
<MenuItem Header="_Open">
<MenuItem.Icon>
<Image Height="16" Width="16" Source="/Assets/Icons/Open.png"/>
</MenuItem.Icon>
</MenuItem>
<Separator/>
<MenuItem Header="E_xit"/>
</MenuItem>
</Menu>
Was ich sehe ist, dass meine Menüpunkte angezeigt werden, aber sobald meine Maus aus dem Menü bewegt (ich muss nicht klicken), das Menü verschwindet. Außerdem funktioniert die normale Tastaturfunktionalität nicht; Wenn Sie die Tastenkombination Alt + F drücken, wird das Menü nicht angezeigt. Wenn die Tasten nach oben/nach unten gedrückt werden, funktioniert die Anzeige nicht. Ich habe versucht, den Typ der MainMenu-Eigenschaft in eine ObservableCollection zu ändern, aber keine Änderung. Irgendwelche Gedanken? Ich bin sicher, ich vermisse etwas Dummes offensichtlich, aber ich kann nichts nützliches in meinen Suchen finden.
Vielen Dank im Voraus!
Eigentlich glaube ich, dass ich es bekommen habe. Vielen Dank für die Antwort. Ja, mein Plan war, eine dynamische Reihe von Menüs zu haben, die kontextbezogen erscheinen, so wie Visual Studio-Menüs funktionieren. Es stellt sich heraus, dass Sie Menüpunkte nicht einfach von einem Menü in ein anderes laden können, was im Wesentlichen das ist, was ich gemacht habe. Macht Sinn, wenn Sie darüber nachdenken, da das Eigentum in Frage gestellt wird. Ich musste das HierarchicalDataTemplate-Objekt und den ContentPresenter verwenden. Nochmals vielen Dank. Ich gebe dir Anerkennung für die Zeit, die du gebraucht hast, um zu antworten. Es wird geschätzt. –