WPF/XAML: Relationales DataSet als Quelle für Listview

09/10/2007 - 16:28 von Michaela Meier | Report spam
Hallo,

Fast war ich ja geneigt zu glauben, ich hàtte Binding in XAML endlich
gemeistert ... aber schon kommt der nàchste Dàmpfer.

Wie definiere ich die Spalten eines Listview, die ihre Inhalte aus 2
verschiedenen Tabellen beziehen?

z.B. habe ich
Tabelle 1 "Hersteller":
- her_nr
- name

Tabelle 2 "Modell":
- her_nr
- mod_nr
- name

Im Listview soll nun "Modellname" und "Herstellername" aufgelistet werden.
Also etwas in der Art von "SELECT Modell.name,Hersteller.name FROM
Modell,Hersteller WHERE Modell.her_nr=Hersteller.her_nr"

XAML ist in dieser Hinsicht nicht unbedingt kooperativ.
<GridViewColumn Header ="Hersteller" DisplayMemberBinding="{Binding
Hersteller.name}" Width="100"></GridViewColumn>
wird zwar nicht bemeckert, aber angezeigt wird auch nichts.

Der Code dahinter ist:
ds.Relations.Add(ds.Tables["modell"].Columns["her_nr"],
ds.Tables["hersteller"].Columns["her_nr"]);
ListView1.DataContext = ds.Tables["modell"];
Binding bind =new Binding();
ListView1.SetBinding(ListView.ItemsSourceProperty, bind);

TIA
 

Lesen sie die antworten

#1 Frank Dzaebel
09/10/2007 - 23:27 | Warnen spam
Hallo Michaela,

Fast war ich ja geneigt zu glauben, ich hàtte Binding in XAML endlich
gemeistert ... aber schon kommt der nàchste Dàmpfer.



es sind eine ganze Menge Features beim WPF
Databinding hinzugekommen, also kein Beinbruch.


Wie definiere ich die Spalten eines Listview, die ihre Inhalte aus 2
verschiedenen Tabellen beziehen?
[...] ds.Relations.Add ... DataSet ... Filtering



ja, Du sprichst hier IMHO die klassische "Master/Detail"
Bindung/Darstellung an.

Zunàchst - Möglichkeiten sind z.B. hier aufgezeigt:

[Beatriz Costa » How do I bind to ADO.NET?]
http://www.beacosta.com/blog/?p!
(weitere Master-Detail-Beispiele unten)


Im Listview soll nun "Modellname" und "Herstellername" aufgelistet werden.
Also etwas in der Art von "SELECT Modell.name,Hersteller.name FROM
Modell,Hersteller WHERE Modell.her_nr=Hersteller.her_nr"



nun, für das ListView wird die Spalten-Darstellung gerne
durch das Verfahren über ein inneres GridView (->GridViewColumns)
oder das DataTemplate, das als Zeilen-Vorlage fungiert, erreicht.
Wie die einzelnen Spalte ihre Bindung erhalten, ist
eigentlich ausreichend beschrieben und keine schwere Syntax:

[ListView Overview]
http://msdn2.microsoft.com/en-us/li...50972.aspx


Weitere Links:

[MSDN Magazin - Data Editing Challenge mit XAML - Online-Artikel]
http://msdnmag.de/itr/online_artike...d,351.html

[How to: Bind to a Collection and Display Information Based on Selection]
http://msdn2.microsoft.com/en-us/li...70558.aspx

[How to: Use the Master-Detail Pattern with Hierarchical Data]
http://msdn2.microsoft.com/en-us/li...42531.aspx

[How to: Use the Master-Detail Pattern with Hierarchical XML Data]
http://msdn2.microsoft.com/en-us/li...53959.aspx

[Master-Detail Scenario Using XmlDataProvider Sample]
http://msdn2.microsoft.com/en-us/li...71675.aspx

[Master-Detail Scenario Using ObjectDataProvider Sample]
http://msdn2.microsoft.com/en-us/li...71687.aspx

geht so "langsam" Richung Datenbank-Gruppe:

[Datenzugriffs-Links für .NET 2.0]
http://dzaebel.net/DataAccess.htm


ciao Frank
Dipl.Inf. Frank Dzaebel [MCP/MVP C#]
http://Dzaebel.NET

Ähnliche fragen