如何根据内容强制StackPanel大小?

时间:2017-04-27 16:41:08

标签: wpf

我有一个StackPanel,它在DataGrid的顶部垂直堆叠DockPanel:

<StackPanel Orientation="Vertical"...etc...
    <DockPanel>
        <Label DockPanel.Dock="Left"...etc... />
        <Button DockPanel.Dock="Right" ...etc.../>
    </DockPanel
    <DataGrid ...etc...
    </DataGrid
</StackPanel

DataGrid绑定到一个集合,因此它的列数仅在运行时才知道。我希望Label控件与DataGrid的左边缘对齐,而Button控件与右边缘对齐,因此I&#m; m使用的面板排列。问题是StackPanel不会将其宽度限制为其内容的宽度,而是扩展到其容器的宽度。结果是当StackPanel的容器(窗口)逐渐变大时,Button将延伸到DataGrid控件的右边缘之外。如何将StackPanel维度限制为其内容的总维度?

1 个答案:

答案 0 :(得分:1)

诀窍是将StackPanel放在双列Grid的最左侧列中:

<Grid>
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="Auto" />
        <ColumnDefinition />
    </Grid.ColumnDefinitions>

    <StackPanel Grid.Column="0" ... etc...>
    </StackPanel>
</Grid>