Autor Beitrag
funcry
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 110
Erhaltene Danke: 1

Win7 64, XP 32
C# (VS 2010 EE), Delphi (TD 2006 Win32)
BeitragVerfasst: Mo 17.08.09 21:39 
Folgende "Optimierung" will mir einfach nicht gelingen, vielleicht hat jemand eine zündende Idee:

Ausgangssituation ist ein ganz normales DataTable welches ich an ein datagrid binde:

c#:
ausblenden C#-Quelltext
1:
this.dataGrid1.ItemsSource = myDataTable.DefaultView;					


In xaml werden die Tabellen-Spalten dann an das Datagrid gebunden:

xaml:
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
<my:DataGridTextColumn                    
  Header="Symbol"                     
  Binding="{Binding Path=Results.Symbol}"                     
  IsReadOnly="True"                     
  CellStyle="{StaticResource CellStyle}"                    
  ElementStyle="{StaticResource TextBlockBottomStyle}" />


Klappt auch!

Wie man hier schon sieht, ist das der Versuch meiner kleinen Optimierung. In meinem Datatable packe ich ein Object rein anstelle einzelner Properties. Das erspart mir den ganzen Overhead das vorhandene Object in einzelne Spalten zu zerlegen. Damit trotzdem Daten angezeigt werden, musste ich das Binding ändern. Anstelle von:

ausblenden C#-Quelltext
1:
Binding="{Binding Path=Symbol}"					


Wobei Symbol eine Tabellen-Spalte dargestellt hat.

in:

ausblenden C#-Quelltext
1:
Binding="{Binding Path=Results.Symbol}"					


Wobei Results ein in dem DataTable gespeichertes Object ist, und Symbol ein Propertie dieses Objektes.

Klappt auch!

Bis auf ein Problem. Das Sortieren funktioniert nicht mehr,
es wird folgende Exception ausgelöst:

ausblenden Quelltext
1:
"Der Typ \"\" besitzt keine Eigenschaft mit dem Namen \"Results.Symbol\", weshalb die Datenauflistung nicht sortiert werden kann."					
funcry Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 110
Erhaltene Danke: 1

Win7 64, XP 32
C# (VS 2010 EE), Delphi (TD 2006 Win32)
BeitragVerfasst: Di 18.08.09 16:42 
Die Idee das Datagrid an ein Datatable zu binden ist doch eher unpraktisch. Ich haben inzwischen zwei Lösungen gefunden - falls wer vor dem gleichen Problem steht:

Lösung eins:
www.scottlogic.co.uk...nary/comment-page-1/
Diese Lösung ist kompliziert und werde ich nicht nutzen, passt aber genau zu meinem Problem.

Lösung zwei:
Anstelle eines Tables mit Rows welche Objekte darstellen nehme ich einfach eine Collection<myDataType>.
Hier hat prötzlich auch das datagrid kein Problem mehr sauber zu den Properties gebunden zu werden, welche myDataType enthält. Es reicht sogar direkt auf das Property zu binden - daher gibt es auch keine Probleme mit dem Sortieren.

Binding="{Binding Path=Symbol}"

Wobei Symbol ein Property meiner Variablen des Typs myDataType ist.