[Hinweis] Wie poste ich richtig? [Hinweis] Wie poste ich richtig? Sehr geehrte Damen und Herren!
Ich möchte in einer C#-Anwendung mittels WPF ein Kontext Menü erstellen. Die im Menü anzuzeigenden Einträge sollen von einer XML Datei kommen. Jedoch werden diese Einträge nicht angezeigt ...
Mein derzeitiger Ansatz:
**
XML-Datei:**
<Menus xmlns="">
<Menu id="Menu1" Name="Main Menu">
<item Name="Item1"></item>
<item Name="Item2"></item>
<item Name="Item3"></item>
</Menu>
</Menus>
**
XAML-Datei:**
<XmlDataProvider x:Key="dataProvider" XPath="//Menus/Menu[@id='Menu1']" Source="file.xml"/>
<Grid.ContextMenu>
<ContextMenu>
<MenuItem Header="{Binding XPath=@Name}">
</MenuItem>
</ContextMenu>
</Grid.ContextMenu>
Ich bitte um Lösungsvorschläge.
Danke schon im Voraus.
Hi Hannes1234,
um die XML-Datei zu lesen, kannst du Serialisation verwenden (Stichwort: XmlSerializer-Klasse). Um die Menüs darzustellen, kannst du DataBinding verwenden: [Artikel] MVVM und DataBinding
Weeks of programming can save you hours of planning
Hallo MrSparkle!
Ich möchte diesen Teil aber im XAML - ohne C#-Code - abschließen.
Mir ist es wichtig, Databinding zu verwenden ...
Das Laden der Menüs aus der XML-Datei ist Teil deiner Anwendungslogik, und hat daher auch nichts in der View zu suchen. XAML ist eine Beschreibungssprache für Oberflächen, du kannst dort keine Anwendungslogik implementieren.
Hast du die Menü-Definitionen einmal geladen, kannst du dafür DataBinding verwenden.
Weeks of programming can save you hours of planning
Hallo Hannes,
dein XML sieht so aus, als hättest du ihn von ContextMenu in WPF with XML Binding. Jedoch ist deine Menu-Deklaration nicht richtig: du benötigst ein (Hierarchical)DataTemplate dafür.
Probiere mal den Code von Bind the xml to menus.
MrSparkle: Das Menü ist nur in eine eigene Datei ausgelagert (anstatt direkt im XAML-Code) und kann daher auch per XmlDataProvider im XAML geladen werden (ohne eigenen Code dafür).