wpf布局问题

时间:2009-08-14 11:50:02

标签: wpf layout grid stackpanel

<Window ... >
    <StackPanel>
        <Button>b1</Button>
        <Button>b2</Button>
    </StackPanel>
</Window>

如何使其看起来像这样:

<Window ...>
    <Grid>
        <Grid.RowDefinitions>
            <RowDefinition></RowDefinition>
            <RowDefinition></RowDefinition>
        </Grid.RowDefinitions>

        <Button>b1</Button>
        <Button Grid.Row="1">b2</Button>
    </Grid>
</Window>

不使用网格

2 个答案:

答案 0 :(得分:5)

你可以尝试:

<Window ... >
    <UniformGrid Rows="2" Columns="1">
        <Button>b1</Button>
        <Button>b2</Button>
    </UniformGrid>
</Window>

不像完整的Grid那样灵活,但更易于使用......

答案 1 :(得分:2)

简短的回答:你不能。

答案很长:编写自定义面板并覆盖ArrangeOverride和MeasureOverride以模拟网格行为。

StackPanel将其每个子元素排列为使用最小高度(如果Orientation == Horizo​​ntal,则为最小宽度)。 StackPanel没有提供改变此行为的属性。另一方面,网格除非另有说明,否则将在每个子节点(或更确切地说是行/列)上均匀划分所有可用空间。