如何在堆栈面板中安排堆栈面板?

时间:2014-02-18 12:52:41

标签: wpf

我在截屏时提到Stack面板时遇到了问题。 我是WPF的新手,我需要设计一个看似图像中提到的布局。

2 个答案:

答案 0 :(得分:2)

Zahorak是对的。有许多方法可以创建此布局,最好是网格或DockPanel。我更喜欢DockPanel。 DockPanel允许您在DockPanel的边缘周围放置子控件,并使用最后一个子控件填充DockPanel的其余部分(如果您没有另外指定)。例如,要获得您所追求的结果,xaml将是

    <DockPanel>
        <StackPanel DockPanel.Dock="Top">
            <TextBlock Text="Stack Panel 2" />
        </StackPanel>
        <StackPanel DockPanel.Dock="Left">
            <TextBlock Text="Stack Panel 3" />
        </StackPanel>
        <StackPanel DockPanel.Dock="Bottom">
            <TextBlock Text="Stack Panel 5" />
        </StackPanel>
        <StackPanel>
            <TextBlock Text="Stack Panel 4" />
        </StackPanel>
    </DockPanel>

网格布局需要更多的工作。

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

        <StackPanel Grid.ColumnSpan="2">
            <TextBlock Text="Stack Panel 2" />
        </StackPanel>
        <StackPanel Grid.Row="1" Grid.RowSpan="2">
            <TextBlock Text="Stack Panel 3" />
        </StackPanel>
        <StackPanel Grid.Row="1" Grid.Column="1">
            <TextBlock Text="Stack Panel 4" />
        </StackPanel>
        <StackPanel Grid.Row="2" Grid.Column="1">
            <TextBlock Text="Stack Panel 5" />
        </StackPanel>
    </Grid>

请注意,缺少的Grid.Row或Grid.Column表示值为0(第一行或第一列)。

我希望这会有所帮助。

答案 1 :(得分:0)

这是纯粹的stackpanels的一种方式。您必须为第二行中高而窄的(Stackpanel 3)设置宽度

<StackPanel Orientation="Vertical" Name="StackPanel1">
    <StackPanel Orientation="Horizontal" Name="StackPanel2">

    <StackPanel>
    <StackPanel Orientation="Horizontal">
        <StackPanel Orientation="Vertical" Name="StackPanel3">

        <StackPanel>
        <StackPanel Orientation="Vertical">
            <StackPanel Orientation="Horizontal" Name="StackPanel4">

            <StackPanel>
            <StackPanel Orientation="Horizontal" Name="StackPanel5">

            <StackPanel>
        <StackPanel>
    <StackPanel>
<StackPanel>