XML-Datei an Listview binden

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 6 Antworten in diesem Thema. Der letzte Beitrag () ist von Jojo0405.

    XML-Datei an Listview binden

    Liebe Community
    ich verzweifle gerade daran, eine xml-datei an ein Listview zu binden. Das Tool soll eine xml-Datei mit eines bestimmten aufbaus öffnen und dann anzeigen.
    Der Aufbau der XMl-Datei lautet wie folgt:

    XML-Quellcode

    1. <db>
    2. <item Name="Test">
    3. <db>
    4. <alias>Global</alias>
    5. <user>SYSDBA</user>
    6. <hostname/>
    7. <databasename>localhost:C:\lcs\Datenbanken\Test\GLOBAL.gdb</databasename>
    8. <drivername>firebird-1.5</drivername>
    9. <collation>Collate PXW_INTL</collation>
    10. <codepage>WIN1252</codepage>
    11. <dialect>1</dialect>
    12. </db>


    der Vb-Code sieht wie folgt aus:

    VB.NET-Quellcode

    1. Dim node As XmlNode
    2. Dim myXmlDocument As New XmlDocument
    3. Private Sub cmdOpen_Click(sender As Object, e As RoutedEventArgs) Handles cmdOpen.Click
    4. Dim ofd As New OpenFileDialog
    5. ofd.Filter = "XMl-Dateien|*.xml"
    6. If ofd.ShowDialog = True Then
    7. myXmlDocument.Load(ofd.FileName)
    8. Dim test As New XmlDataProvider
    9. test = TryCast(FindResource("Datenbanken"), XmlDataProvider)
    10. test.Document = myXmlDocument
    11. ' MsgBox(ListData.Items.Count)
    12. End If
    13. End Sub



    und der xmal-WPF wie folgt:

    XML-Quellcode

    1. <Window.Resources>
    2. <XmlDataProvider x:Key="Datenbanken" XPath="db" />
    3. </Window.Resources>

    ...

    XML-Quellcode

    1. ListView x:Name="ListData" DataContext="{StaticResource Datenbanken }" IsSynchronizedWithCurrentItem="True">
    2. <ListView.ItemTemplate>
    3. <HierarchicalDataTemplate ItemsSource="{Binding XPath=lcsdb\item\db}">
    4. <StackPanel Orientation="Horizontal">
    5. <TextBox Text="{Binding XPath=user, Mode=TwoWay}" />
    6. </StackPanel>
    7. </HierarchicalDataTemplate>
    8. </ListView.ItemTemplate>
    9. </ListView>


    Ich vermute, dass das Problem lediglich im XAML Code liegt, weiß aber nicht genau wie ichs anpacken soll...
    Hi @Jojo0405

    was ich dir als erste empfehle ist Option Strict On. Um nur mal Zeile #7 in deinem VB.Net Code anzusprechen. Denn die OpenFileDialog.ShowDialog Methode gibt keinen Bool zurück sondern einen DialogResult(ist im Prinzip eine Enumeration, die als Integer verwendet werden kann, den du mit System.Windows.Forms.DialogResult abfragen kann:

    VB.NET-Quellcode

    1. Using ofd As new OpenFileDialog
    2. If (ofd.ShowDialog() = System.Windows.Forms.DialogResult.Ok) Then
    3. 'Dein Code
    4. End If
    5. 'Weiterer Code


    Schau dir mal bitt diesen YoutubeLink an: Xml Data Binding: How to Bind Xml Data to ListBox using XmlDataProvider in WPF
    (Auch wenn jetz wieder Leute maulen, YT Tuts/Videos wären Müll...hier wird genau das beschriebnn was @Jojo0405 braucht!)

    Und bitte kein MsgBox(....) nimm bitte System.Windows.Forms.MessageBox.Show() und caste den Output mit .toString() zu einem String. (Würde dir eh angezeigt werden, dass das ned geht, wenn du Option Stric auf On hättest.

    Lg Radinator
    In general (across programming languages), a pointer is a number that represents a physical location in memory. A nullpointer is (almost always) one that points to 0, and is widely recognized as "not pointing to anything". Since systems have different amounts of supported memory, it doesn't always take the same number of bytes to hold that number, so we call a "native size integer" one that can hold a pointer on any particular system. - Sam Harwell