Hallo,
ich möchte dynamisch Grid Rows und Columns erzeugen. Alle Zellen sind gleich groß und damit jede Row- bzw. Columndefinition gleich, also habe ich folgenden Code produziert:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25:
| double sqrt = Math.Sqrt(MAX_CELL_COUNT); int rowCount = Convert.ToInt32(sqrt - 1.0), colCount = Convert.ToInt32(sqrt); GridLength gl = new GridLength(1.0, GridUnitType.Star); RowDefinition rd = new RowDefinition() { Height = gl }; ColumnDefinition cd = new ColumnDefinition() { Width = gl }; for (; rowCount > 0; --rowCount) { this.MyGrid.RowDefinitions.Add(rd); } for (; colCount > 0; --colCount) { this.MyGrid.ColumnDefinitions.Add(cd); } |
Das ganze führt jedoch zur Exception, dass er plötzlich die Page nicht mehr finden würde (das ganze Läuft in einer NavigationApplication).
Die Exception tritt genau dann auf, wenn die for-Schleife zum zweiten Mal "rd" adden möchte. Daher gehe ich davon aus, dass C# es nicht erlaubt, dass ich ihm mehrfach die selbe Instanz als "neue" RowDefinition verkaufe.
Als C/C++ Programmierer ist es mir jedoch zu wider - vollkommen unnötiger Weise - mehrfach eine Klasse mit den gleichen Attributen zu instanzieren.
Daher meine Frage: Geht dass nicht auch einfacher?