2009-12-07 7 views
8

Wie fügt man einfach eine Zellenfüllung für ein Grid in Silverlight hinzu? Die Ränder für jede Zelle einzustellen, sieht sehr laut aus.Silverlight (3.0): Wie fügt man Zellenabstand zu einem Raster hinzu?

<Grid.RowDefinitions> 
    <RowDefinition Height="Auto" /> 
    <RowDefinition Height="Auto" /> 
</Grid.RowDefinitions> 
<Grid.ColumnDefinitions> 
    <ColumnDefinition Width="Auto" /> 
    <ColumnDefinition Width="*" /> 
</Grid.ColumnDefinitions> 

<TextBlock Text="Type:" Grid.Column="0" Grid.Row="0"></TextBlock> 
<ComboBox Grid.Column="1" Grid.Row="0"></ComboBox> 
<TextBlock Text="Length:" Grid.Column="0" Grid.Row="1" ></TextBlock> 
<TextBox Grid.Column="1" Grid.Row="1"></TextBlock> 

+0

Ich sage kaum, dass das Hinzufügen von Margin zu jeder Zelle "sehr laut" war. – AnthonyWJones

Antwort

13

Jemand wird kreuzigen mich wahrscheinlich für die Hässlichkeit dieser Lösung, aber Sie können zwischen den tatsächlichen Zeilen Zeilen und Spalten mit Höhe und Breite auf das Doppelte des padding Werte hinzufügen und Spalten, die Daten enthalten:

<Grid> 
<Grid.RowDefinitions> 
    <RowDefinition Height="Auto" /> 
    <RowDefinition Height="4" /> 
    <RowDefinition Height="Auto" /> 
</Grid.RowDefinitions> 
<Grid.ColumnDefinitions> 
    <ColumnDefinition Width="Auto" /> 
    <ColumnDefinition Width="4" /> 
    <ColumnDefinition Width="*" /> 
</Grid.ColumnDefinitions> 
<TextBlock Text="test" Grid.Column="0" Grid.Row="0" /> 
<TextBlock Text="test" Grid.Column="0" Grid.Row="2" /> 
<TextBlock Text="test" Grid.Column="2" Grid.Row="0" /> 
<TextBlock Text="test" Grid.Column="2" Grid.Row="2" /> 
</Grid> 
+0

Im Gegenteil, ich habe festgestellt, dass dies in der Vergangenheit eine recht gute Lösung war. –

+0

Ich habe das in der Vergangenheit verwendet, aber es hat mich verrückt gemacht, ich habe für immer die korrekte Zeilen- und Spaltennummer falsch berechnet, um sie auf ein Element anzuwenden. – AnthonyWJones

+0

@ Anthony - Ich hatte das gleiche Problem beim Aufarbeiten des Beispiels :) Aber dann ist die ganze Grid-Syntax und Konstruktion meiner Meinung nach äußerst hässlich. Ich habe nur ein 1x1-Raster in der Produktion verwendet - alles andere sind StackPanels und Borders. – Klay

2

Ich persönlich bevorzuge die Verwendung von Margen. Um es ein wenig aufzuräumen, können Sie sie in Stile umgestalten. Sie könnten sogar einen Schritt weiter gehen und einen impliziten Style-Manager verwenden.

Wenn Sie wirklich etwas sauberes wollten, könnten Sie eine Padding-Eigenschaft erstellen, die das rastergeladene Ereignis behandelt und dann die Ränder aller untergeordneten Elemente einstellt.

Verwandte Themen