Autor Beitrag
FrEEzE2046
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 109

Windows 98, 2000, XP Pro, Vista Ultimate 32 & 64 Bit, Windows 7 Beta 64 Bit
C/C++, C# (VS 2008 TeamSystem) - Delphi (Delphi 5) - Java (Eclipse)
BeitragVerfasst: Di 25.05.10 14:55 
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:

ausblenden 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?
Kha
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3803
Erhaltene Danke: 176

Arch Linux
Python, C, C++ (vim)
BeitragVerfasst: Di 25.05.10 17:30 
Die innerste Exception sollte eher "'value' already belongs to another 'RowDefinitionCollection'." lauten. Da DependencyObjects einen Parent haben, können sie nur einmal eingehängt werden. Selbst wenn es sich um den gleichen Parent handelt, dürften sich sonst einige Komplikationen ergeben.

user profile iconFrEEzE2046 hat folgendes geschrieben Zum zitierten Posting springen:
Als C/C++ Programmierer ist es mir jedoch zu wider - vollkommen unnötiger Weise - mehrfach eine Klasse mit den gleichen Attributen zu instanzieren.
Wirst du's überleben ;) ? In F# bin ich es gewohnt, in quasi jeder Zeile implizit ein Tupel-Objekt zu erzeugen, und in 99% der Fälle kann es mir völlig wurst sein. Das bedeutet es, in einer High-Level-Sprache mit GC zu arbeiten.

_________________
>λ=