0
<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>

不使用网格

4

2 回答 2

5

你可以试试:

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

不像成熟的那样灵活Grid,但使用起来更简单......

于 2009-08-14T12:05:41.087 回答
2

简短的回答:你不能。

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

StackPanel 将其每个子元素排列为使用最小高度(如果 Orientation == Horizo​​ntal,则使用最小宽度)。StackPanel 不提供任何属性来改变这种行为。另一方面,除非另有说明,否则网格会将所有可用空间平均分配给每个子项(或者更确切地说是行/列)。

于 2009-08-14T12:44:05.593 回答