Hallo,
habe nun ein wenig mit WPF rumprobiert. Ich konnte auf dürftige Art und Weise ein Parent-Child-View basteln. Hätte in diesem Zusammenhang aber einiges an Fragen.
Erstmal mein Code:
Data Klasse
Paket Klasse
MainWindow
Frage 1:
Ist das noch/schon MVVM?
Frage 2:
In einem Sample von Edr wird sehr darauf geachtet wie die Modelldaten instanziert werden. Vielleicht ist die Frage auch besser direkt an @ErfinderDesRades gerichtet. Ich hab da jetzt einfach eine ganz normale Sub New für mein "Mainmodel". Warum darf das nicht mehrfach instanzierbar sein?
Frage 3:
Ich hab jetzt extra eine Paket Klasse gemacht damit ich die Objekte im Paket als eine Eigenschaft von Paket einrichten kann. So kriegt das MainWindow die Parent-Child Beziehung hin zwischen den beiden Listboxen.
Die Datenbasis sind hingegen wie man es gewohnt ist zwei Tabellen mit Fremdschlüsselbeziehung.
Gibt es die Möglichkeit da die Datenbindung schon aus dem DataSet hinzukriegen?
Denn sowohl die Tabelle Paket und die Tabelle Objekt sind ja bereits Properties des DataSets. Ich kann statt der Data Klasse die DataSet Klasse als DataContext verwenden, allerdings fehlt so eine Parent-Child-Beziehung zwischen den Listboxen bzw. weiß ich nicht wie das dann ginge.
Frage 4:
Was ich ultimativ möchte, ist nicht zwei Auflistungen nebeneinander anzeigen, sondern die eine Auflistung in der anderen zu verpacken.
Quasi eine Tabelle als Paketzeilen, aber eine jede solche Zeile kann man dann aufklappen, um die Inhalte dieses Paketes zu sehen.
Welches Control muss ich dafür verwenden, ist der TreeView der richtige?
Viele Grüße
habe nun ein wenig mit WPF rumprobiert. Ich konnte auf dürftige Art und Weise ein Parent-Child-View basteln. Hätte in diesem Zusammenhang aber einiges an Fragen.
Erstmal mein Code:
VB.NET-Quellcode
- Public Class Data
- Private Shared _DS1 As New DataSet1
- Private _OPakete As ObservableCollection(Of Paket)
- Public Sub New()
- _DS1.Clear()
- _DS1.ReadXml("pfad")
- _OPakete = New ObservableCollection(Of Paket)
- For Each p In _DS1.Paket
- _OPakete.Add(New Paket(p.ID, _DS1.Objekt.Where(Function(x) x.PaketID = p.ID)))
- Next
- End Sub
- Public ReadOnly Property Paket As ObservableCollection(Of Paket)
- Get
- Return _OPakete
- End Get
- End Property
- End Class
VB.NET-Quellcode
- Public Class Paket
- Public Property ID As Integer
- Public Property Inhalt As ObservableCollection(Of DataSet1.ObjektRow)
- Public Sub New(id As Integer, inhalt As IEnumerable(Of DataSet1.ObjektRow))
- _ID = id
- _Inhalt = New ObservableCollection(Of DataSet1.ObjektRow)
- For Each o In inhalt
- _Inhalt.Add(o)
- Next
- End Sub
- End Class
XML-Quellcode
- ...
- DataContext="{Binding Source={StaticResource Data1}}">
- <Grid>
- <Grid.ColumnDefinitions>
- <ColumnDefinition Width="*"/>
- <ColumnDefinition Width="*"/>
- </Grid.ColumnDefinitions>
- <ListBox Grid.Column="0" ItemsSource="{Binding Paket}" DisplayMemberPath="ID" IsSynchronizedWithCurrentItem="True" Margin="10">
- </ListBox>
- <ListBox Grid.Column="1" ItemsSource="{Binding Path=Paket/Inhalt}" DisplayMemberPath="Bezeichnung" Margin="10">
- </ListBox>
- </Grid>
Frage 1:
Ist das noch/schon MVVM?
Frage 2:
In einem Sample von Edr wird sehr darauf geachtet wie die Modelldaten instanziert werden. Vielleicht ist die Frage auch besser direkt an @ErfinderDesRades gerichtet. Ich hab da jetzt einfach eine ganz normale Sub New für mein "Mainmodel". Warum darf das nicht mehrfach instanzierbar sein?
Frage 3:
Ich hab jetzt extra eine Paket Klasse gemacht damit ich die Objekte im Paket als eine Eigenschaft von Paket einrichten kann. So kriegt das MainWindow die Parent-Child Beziehung hin zwischen den beiden Listboxen.
Die Datenbasis sind hingegen wie man es gewohnt ist zwei Tabellen mit Fremdschlüsselbeziehung.
Gibt es die Möglichkeit da die Datenbindung schon aus dem DataSet hinzukriegen?
Denn sowohl die Tabelle Paket und die Tabelle Objekt sind ja bereits Properties des DataSets. Ich kann statt der Data Klasse die DataSet Klasse als DataContext verwenden, allerdings fehlt so eine Parent-Child-Beziehung zwischen den Listboxen bzw. weiß ich nicht wie das dann ginge.
Frage 4:
Was ich ultimativ möchte, ist nicht zwei Auflistungen nebeneinander anzeigen, sondern die eine Auflistung in der anderen zu verpacken.
Quasi eine Tabelle als Paketzeilen, aber eine jede solche Zeile kann man dann aufklappen, um die Inhalte dieses Paketes zu sehen.
Welches Control muss ich dafür verwenden, ist der TreeView der richtige?
Viele Grüße