Laden...

Wie kann ich mit WPF ein Kontext-Menü erstellen?

Erstellt von Hannes1234 vor 6 Jahren Letzter Beitrag vor 6 Jahren 2.138 Views
H
Hannes1234 Themenstarter:in
4 Beiträge seit 2017
vor 6 Jahren
Wie kann ich mit WPF ein Kontext-Menü erstellen?

[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.

5.658 Beiträge seit 2006
vor 6 Jahren

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

H
Hannes1234 Themenstarter:in
4 Beiträge seit 2017
vor 6 Jahren

Hallo MrSparkle!

Ich möchte diesen Teil aber im XAML - ohne C#-Code - abschließen.
Mir ist es wichtig, Databinding zu verwenden ...

5.658 Beiträge seit 2006
vor 6 Jahren

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

4.938 Beiträge seit 2008
vor 6 Jahren

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).

H
Hannes1234 Themenstarter:in
4 Beiträge seit 2017
vor 6 Jahren

Vielen Dank für eure Antworten.
Problem gelöst