2016-03-30 6 views
0

Ich experimentiere zum ersten Mal mit C#/.net/WPF. Ich habe ein Projekt erstellt und eine Datenquelle (nur eine Tabelle mit einigen Beispieldaten) eingerichtet und zwei Tableadapter Prods und Prods1 erstellt - letzteres hat einen Filter in der Abfrage angewendet, um etwas andere Ergebnisse zurückzugeben. Ich habe beide Tabellen auf meinem Formular abgelegt und beide zeigen pflichtgemäß ihre jeweiligen Daten an.Eine andere ViewSource in WPF zuweisen

Ich dachte, ich würde dann die Datenquelle für jeden austauschen. So ist der Standard erzeugte Window_Loaded:

MSDSTest.prodtestDataSet prodtestDataSet = ((MSDSTest.prodtestDataSet)(this.FindResource("prodtestDataSet"))); 
// Load data into the table Prods. You can modify this code as needed. 
MSDSTest.prodtestDataSetTableAdapters.ProdsTableAdapter prodtestDataSetProdsTableAdapter = new MSDSTest.prodtestDataSetTableAdapters.ProdsTableAdapter(); 
prodtestDataSetProdsTableAdapter.Fill(prodtestDataSet.Prods); 
System.Windows.Data.CollectionViewSource prodsViewSource = ((System.Windows.Data.CollectionViewSource)(this.FindResource("prodsViewSource"))); 
prodsViewSource.View.MoveCurrentToFirst(); 
// Load data into the table Prods1. You can modify this code as needed. 
MSDSTest.prodtestDataSetTableAdapters.Prods1TableAdapter prodtestDataSetProds1TableAdapter = new MSDSTest.prodtestDataSetTableAdapters.Prods1TableAdapter(); 
prodtestDataSetProds1TableAdapter.Fill(prodtestDataSet.Prods1); 
System.Windows.Data.CollectionViewSource prods1ViewSource = ((System.Windows.Data.CollectionViewSource)(this.FindResource("prods1ViewSource"))); 
prods1ViewSource.View.MoveCurrentToFirst(); 

Ich mag nun den ersten Datenraster (prodsViewSource) anstelle die Daten für die zweite Tabelle anzeigen machen, und ignoriere völlig die zweite Tabelle. Also änderte ich das wie folgt:

MSDSTest.prodtestDataSet prodtestDataSet = ((MSDSTest.prodtestDataSet)(this.FindResource("prodtestDataSet"))); 
// Load data into the table Prods. You can modify this code as needed. 
MSDSTest.prodtestDataSetTableAdapters.Prods1TableAdapter prodtestDataSetProdsTableAdapter = new MSDSTest.prodtestDataSetTableAdapters.Prods1TableAdapter(); 
prodtestDataSetProdsTableAdapter.Fill(prodtestDataSet.Prods1); 
System.Windows.Data.CollectionViewSource prodsViewSource = ((System.Windows.Data.CollectionViewSource)(this.FindResource("prodsViewSource"))); 
prodsViewSource.View.MoveCurrentToFirst(); 

Mit dem zweiten Block, der auskommentiert worden ist.

ich grundlegende etwas fehlen darf - was ich denken Ich mache die prodtestDataSetProdsTableAddapter Variable neu definiert eine Instanz des prods1 Tabellenadapter zu verwenden, und dann, dass auf dem Formular das prodsViewSource Raster zu füllen, aber ich am Ende mit einem Leerzeichen. Wo ist mein Fehler?

Antwort

0

...

Nun, ich gepostet nach meinem Kopf dagegen für eine Stunde zu schlagen, und Minuten später erkannten das viel leichter, was zu tun, um die Datacontext-Eigenschaft des Rasters in Frage nur ändern.

Ich würde immer noch gerne verstehen, warum es nicht immer gut war, wenn man es auf die weitaus kompliziertere Art und Weise - an der Rube-Goldberg-Methode - nicht funktionierte, wenn jemand das erklären könnte.

Verwandte Themen