Frage

Für WPF / Silverlight-Layout, ist es besser, ein Gitter mit vielen Zeilen und Spalten zu verwenden, oder Tonnen Stackpanels?

War es hilfreich?

Lösung

Sie sollten ein Gitter verwenden, wenn Sie Dinge müssen horizontal und vertikal ausrichten. Verwenden Sie eine Stackpanel eine Zeile oder Spalte der Dinge zu schaffen, wenn die Dinge nicht anders mit etwas anstehen müssen.

Allerdings beschränken Sie sich nicht auf diese beiden Optionen. Insbesondere haben einen Blick auf die DockPanel. Es ist etwas komplexer als ein Stackpanel, aber seine Markup ist als das Gitter nicht so überladen. Hier ist ein guter Artikel über die DockPanel:

mit dem DockPanel in Silverlight 2

Andere Tipps

Der Behälter sollte man auf den Inhalt sein verwenden basiert und nicht, ob ein Ansatz besser als der andere ist. Wenn Sie die Dinge müssen sowohl horizontal aufreihen und vertikal, sollten Sie wirklich ein Gitter verwenden. Aber anders als das, es hängt wirklich von den Inhalt Sie anzeigen möchten.

Ich denke, das Grid ist eine bessere Idee. Ich in der Regel das allgemeine Layout mit einem Grid einzurichten und verwenden ein paar stackpanels hier und da einige spezielle Sachen zu tun. Ich habe auch das Gefühl, dass die Leistung mit Grids besser ist und dass Grids im Allgemeinen Ihnen mehr Flexibilität.

Ich glaube nicht, Grid eine bessere Idee.

zum Beispiel, wenn Sie wollen, eine Zeile zu bestehenden Grid-Layout-Dokument einzufügen (in der Mitte)

dort exising Reihe 1,2,3,4, dann ist die Anforderung, neue Zeile zwischen 1 und 2 eingefügt werden.

dann mußte man 2,3,4 zu 3,4,5 ändern (finden Sie alle Tag eine Änderung ....)

darüber nachdenken, wenn eine Zeile hat. 3 - 5 Säulen ... es ist ein schmutziger Job all digital neu zu ordnen !!!

ich die Stackpanel bevorzugen, weil ich es einfacher, Änderungen finden, wenn neue Elemente einfügen, Zeilen oder Spalten. Mit einem Raster müssen Sie Zeilennummern und Spaltennummern lesen, um herauszufinden, wo Sie sind. Mit einem Stackpanel folgen Sie einfach der Verschachtelung, das ist einfacher und weniger chaotisch als ein Gitter.

Zum Beispiel in einer XAML-Seite, verwende ich eine horizontale Stapelplatte wie ein Elternteil Gitter, dann, wenn ich eine Spalte brauchen, ich habe einen separater „vertikaler“ Stackpanel verschachtelt. Auf diese Weise eine horizontale Stackpanel wird zu einem „Raster“ und die verschachtelten vertikalen Stackpanel ist werden die Spalten. Ich finde diese leichter zu lesen und ändern, dass die Zeilen und Spalten in einem Raster.

Beide haben Stärke (Grid / Stackpanel). Problem mit Grid ist die Linien Umstrukturierung. Das Problem mit dem Stackpanel ist, dass keine Tabellenstruktur (feste Spalt Breite). Also ich denke, das ist eine gute Lösung zu diesen Problemen :-)

Definition Stile

<Page.Resources>
    <Style x:Key="LabelCol1" TargetType="Label">
        <Setter Property="Width" Value="200" />
    </Style>
    <Style x:Key="EditCol2" TargetType="TextBox">
        <Setter Property="Width" Value="250" />
        <Setter Property="TextWrapping" Value="Wrap" />
        <Setter Property="Margin" Value="3" />
    </Style>
    <Style x:Key="ButtonCol3" TargetType="Button">
        <Setter Property="Width" Value="120" />
        <Setter Property="Margin" Value="3" />
        <Setter Property="VerticalContentAlignment" Value="Center" />
        <Setter Property="HorizontalContentAlignment" Value="Center" />
    </Style>
</Page.Resources>

Und mit Stilen in Stackpanel

<StackPanel>
    <StackPanel Orientation="Horizontal">
        <Label Style="{StaticResource LabelCol1}" Content="Solution path"  />
        <TextBox Style="{StaticResource EditCol2}" />
        <Button Style="{StaticResource ButtonCol3}" Content="Open..." />
    </StackPanel>
    <StackPanel Orientation="Horizontal">
        <Label Style="{StaticResource LabelCol1}" Content="Solution name"  />
        <TextBox Style="{StaticResource EditCol2}" />
    </StackPanel>
</StackPanel>

Ich habe keine Erfahrung mit einem solchen Layout, aber ich wette, dass das Gitter leichter ist, im Vergleich zu vielen verschachtelten stackpanels zu machen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top