Textbox Datenbindung Variabel uber selectedItem

  • WPF

Es gibt 8 Antworten in diesem Thema. Der letzte Beitrag () ist von ThuCommix.

    Textbox Datenbindung Variabel uber selectedItem

    Hallo zusammen benötige Eure Hilfe:
    Habe folgende XML:

    XML-Quellcode

    1. <?xml version="1.0" standalone="yes"?>
    2. <Ini>
    3. <LokalPfad>
    4. <Pfadbezeichnung>Pfad Zentral Ini</Pfadbezeichnung>
    5. <Pfad>F:\XML_Daten\Movie.xml</Pfad>
    6. </LokalPfad>
    7. <LokalPfad>
    8. <Pfadbezeichnung>Pfad Mandant Ini</Pfadbezeichnung>
    9. <Pfad>"E:\XML_Daten\XMLDaten.xml"</Pfad>
    10. </LokalPfad>
    11. <LokalPfad>
    12. <Pfadbezeichnung>Kundenstamm</Pfadbezeichnung>
    13. <Pfad>D:/Kunden</Pfad>
    14. </LokalPfad>
    15. <Zentralpfad>
    16. <Pfadbezeichnung>ArtikelZentral</Pfadbezeichnung>
    17. <Pfad>F:\XML_Daten\XMLTest.xml</Pfad>
    18. </Zentralpfad>
    19. <Mandant>
    20. <MandantName>Max</MandantName>
    21. <MandantPfad>X:/Max</MandantPfad>
    22. </Mandant>
    23. <Mandant>
    24. <MandantName>Moritz</MandantName>
    25. <MandantPfad>X:/Moritz</MandantPfad>
    26. </Mandant>


    mit folgender XAML:

    XML-Quellcode

    1. <TextBox x:Name="slePfad"
    2. Text="{Binding SelectedItem.Pfad, ElementName=dgIni, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
    3. HorizontalAlignment="Right" Height="28" Margin="0,179.5,101.334,0" Grid.RowSpan="2"
    4. TextWrapping="Wrap" VerticalAlignment="Top" Width="227.333" >
    5. </TextBox>


    und folgendem Vb-Code:

    VB.NET-Quellcode

    1. Private Sub frmIni_Loaded(sender As Object, e As RoutedEventArgs) Handles Me.Loaded
    2. cPfad = sLokalIniPfad
    3. DsIni.ReadXml(sLokalIniPfad)
    4. If DsIni.Tables.Count > 0 Then
    5. dgIni.ItemsSource = DsIni.Tables(DsIni.Tables(0).ToString).DefaultView
    6. cbAuswahl.ItemsSource = DsIni.Tables()
    7. cbAuswahl.DisplayMemberPath = "TableName"
    8. dgIni.SelectedIndex = 0
    9. End If
    10. End Sub

    Funktioniert alles soweit aber, wenn der XAML-Binding =selectedItem in der XML Pfad(<Pfad>"E:\XML_Daten\XMLDaten.xml"</Pfad>) ist, sondern z.B MandantPfad (<MandantPfad>X:/Moritz</MandantPfad>)o.ä. lautet, wird im slePfad nichts angezeigt.
    Hat jemand nee Idee wie ich das flexibel hinbekomme ?

    Grüße und Danke Thomi :)
    Hallo ThuCommix, Danke für die schnelle Nachricht!
    OK das ist eine Möglichkeit wenn man die die Einträge der XML vorher weiß, aber was ist wenn nicht?
    Die XML hat immer 2 Einträge:

    XML-Quellcode

    1. <Zentralpfad>
    2. <Pfadbezeichnung>ArtikelZentral</Pfadbezeichnung>
    3. <Pfad>F:\XML_Daten\XMLTest.xml</Pfad>
    4. </Zentralpfad>
    5. <Mandant>
    6. <MandantName>Max</MandantName>
    7. <MandantPfad>X:/Max</MandantPfad>
    8. </Mandant>

    Diese werden immer in Spalte 0 und Spalte1 vom Datagrid angezeigt. Kann man nicht selektedItem an den Spaltennamen binden? Da wäre der Code offen.
    Grüße und Danke :)
    Ok, beim ersten Aufruf funktioniert es, aber wenn ich die Tabelle wechsle bleibt die Textbox leer

    XML-Quellcode

    1. <TextBox x:Name="slePfad"
    2. Text="{Binding SelectedItem[1], ElementName=dgIni, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
    3. HorizontalAlignment="Right" Height="28" Margin="0,179.5,101.334,0" Grid.RowSpan="2"
    4. TextWrapping="Wrap" VerticalAlignment="Top" Width="227.333" >
    5. </TextBox>

    Wahrscheinlich wird das selectedItem nicht nachgeführt beim wechseln der Tabellen
    muss man das noch irgendwie im Click-Ereignis der Combobox anstoßen? ?(
    Also du änderst die ItemsSource und das Textfeld aktualisiert sich nicht? Du könntest versuchen SelectedItemIndex auf 0 zu setzen wenn du die Tabelle änderst.

    Hast du schon mal von MVVM (Model View ViewModel) gehört?
    Hi,
    habe

    VB.NET-Quellcode

    1. Private Sub cbAuswahl_SelectionChanged(sender As Object, e As SelectionChangedEventArgs) Handles cbAuswahl.SelectionChanged
    2. dgIni.ItemsSource = DsIni.Tables(DsIni.Tables(cbAuswahl.SelectedIndex).ToString).DefaultView
    3. dgIni.SelectedIndex = 0
    4. End Sub

    eingefügt. Funktioniert trotzdem nicht.
    Geht es eventuell über Event Trigger? ?(
    Danke
    Du könntest versuchen SelectedItemIndex auf 0 zu setzen wenn du die Tabelle änderst.

    wie mache ich das?
    ich denke ich muss über einen Trigger das "Neueinlesen" der Zeile

    XML-Quellcode

    1. <TextBox x:Name="slePfad"
    2. Text="{Binding SelectedItem[1], ElementName=dgIni, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
    3. HorizontalAlignment="Right" Height="28" Margin="0,179.5,101.334,0" Grid.RowSpan="2"
    4. TextWrapping="Wrap" VerticalAlignment="Top" Width="227.333" >
    5. </TextBox>
    neu anstoßen
    Weis blos nicht wie?? :(
    Grüße