Hallo,
ich bin auf der Suche nach einer für mich verständlichen Anleitung um eine ObservableCollection an ein Datagrid zu binden. Ich würde das Binding gerne im Windows (xaml) gerne durchführen. Über reinen Code klappt es, aber ich möchte auch Wissen wie es über die Form geht.
Nehmen wir mal an ich habe eine Klasse Kunden die eine BindingList von Kontakt enthält.
Das Windows ist wie folgt aufgebaut:
MainWindows.xaml
Der dazugehörige Code
MainWindows.xaml.vb
Meine XML Testdaten:
Nun zu meinen Fragen. Wie Binden ich ObservableCollection Kontake an das DataGrid. Es soll nicht über VB passieren, so wie in diesem Beispiel.
Sondern ich möchte gerne die Datasource im XAML des Windows definieren.
Im zweiten Schritt würde ich gerne in der Textbox den Nachnamen des ausgewählten Datensatzes anzeigen.
Über ejne Anregung, Hilfestellung, Hinweis, Link bin ich dankbar. Was mir nicht hilft, ist die Microsoft Hilfe. Da habe ich schon gesucht und verstehe da leider teilweise nur Bahnhof.
Danke für eure Hilfe
ich bin auf der Suche nach einer für mich verständlichen Anleitung um eine ObservableCollection an ein Datagrid zu binden. Ich würde das Binding gerne im Windows (xaml) gerne durchführen. Über reinen Code klappt es, aber ich möchte auch Wissen wie es über die Form geht.
Nehmen wir mal an ich habe eine Klasse Kunden die eine BindingList von Kontakt enthält.
VB.NET-Quellcode
- Public Class Kunden
- Public Property Kontakte As New ObservableCollection(Of Kunden.Kontakt)
- Public Class Kontakt
- Private _Nachname As String
- Private _Vorname As String
- Public Property Nachname As String
- Get
- Return _Nachname
- End Get
- Set(value As String)
- If _Nachname = value Then
- Return
- End If
- _Nachname = value
- End Set
- End Property
- Public Property Vorname As String
- Get
- Return _Vorname
- End Get
- Set(value As String)
- If _Vorname = value Then
- Return
- End If
- _Vorname = value
- End Set
- End Property
- End Class
- End Class
Das Windows ist wie folgt aufgebaut:
MainWindows.xaml
VB.NET-Quellcode
- <Window x:Class="MainWindow"
- xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
- xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
- xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
- xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
- xmlns:local="clr-namespace:Testerei"
- mc:Ignorable="d"
- Title="Test DataGrid binding" Height="450" Width="800">
- <Grid>
- <DataGrid x:Name="DataGridKontakte" Margin="10,10,10,33" AutoGenerateColumns="False" CanUserDeleteRows="False" CanUserAddRows="False" >
- <DataGrid.Columns >
- <DataGridTextColumn Header="Nachname" Binding="{Binding Nachname}"/>
- <DataGridTextColumn Header="Vorname" Binding="{Binding Vorname}"/>
- </DataGrid.Columns>
- </DataGrid>
- <TextBox x:Name="TextBoxSlectedNachname" Margin="10,0,10,10" TextWrapping="Wrap" Text="TextBox" Height="18" VerticalAlignment="Bottom"/>
- </Grid>
- </Window>
Der dazugehörige Code
MainWindows.xaml.vb
VB.NET-Quellcode
- Class MainWindow
- Dim myKunden As New Kunden
- Sub New()
- ' Dieser Aufruf ist für den Designer erforderlich.
- InitializeComponent()
- ' Fügen Sie Initialisierungen nach dem InitializeComponent()-Aufruf hinzu.
- Dim XMLDataFile As String = "D:\Kunden.xml"
- Dim XmlReader As New System.Xml.Serialization.XmlSerializer(GetType(Kunden))
- Dim XmlFile As New System.IO.StreamReader(XMLDataFile)
- myKunden = CType(XmlReader.Deserialize(XmlFile), Kunden)
- XmlFile.Close()
- Me.DataGridKontakte.ItemsSource = myKunden.Kontakte
- End Sub
- End Class
Meine XML Testdaten:
XML-Quellcode
- <?xml version="1.0" encoding="utf-8"?>
- <Kunden xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
- <Kontakte>
- <Kontakt>
- <Nachname>Mustermann</Nachname>
- <Vorname>Max</Vorname>
- </Kontakt>
- <Kontakt>
- <Nachname>Mustermann</Nachname>
- <Vorname>Irene</Vorname>
- </Kontakt>
- <Kontakt>
- <Nachname>Wurst</Nachname>
- <Vorname>Hans</Vorname>
- </Kontakt>
- </Kontakte>
- </Kunden>
Nun zu meinen Fragen. Wie Binden ich ObservableCollection Kontake an das DataGrid. Es soll nicht über VB passieren, so wie in diesem Beispiel.
Sondern ich möchte gerne die Datasource im XAML des Windows definieren.
Im zweiten Schritt würde ich gerne in der Textbox den Nachnamen des ausgewählten Datensatzes anzeigen.
Über ejne Anregung, Hilfestellung, Hinweis, Link bin ich dankbar. Was mir nicht hilft, ist die Microsoft Hilfe. Da habe ich schon gesucht und verstehe da leider teilweise nur Bahnhof.
Danke für eure Hilfe
Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „bahnski“ ()