ListView布局

时间:2014-10-01 12:38:09

标签: c# wpf listview

看起来很简单,但难以置信。

我想要这样的布局:

ListView它应该占据最大按钮高度(可见按钮的数量是动态的)。

我试过这个

<Grid>
    <Grid.RowDefinitions>
        <RowDefinition Height="*"/>
        <RowDefinition Height="Auto"/>
    </Grid.RowDefinitions>

    ...

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

        <StackPanel>
            <Button/>
            <Button/>
            ...
        </StackPanel>

        <ListView Grid.Column="1"/>

    </Grid>
</Grid>

问题:ListView有一个非常奇怪的行为来调整内容的大小。如果我添加了很多项目,那么它突然占用了所有窗口空间。

问题:如何将ListView高度限制为不超过按钮总高度(StackPanel高度)?

P.S。:mvvm,所以纯xaml是优选的。

P.S.S。:我觉得这将是某种东西的束缚。但是到底是什么?

2 个答案:

答案 0 :(得分:1)

您只需要将ActualHeight的{​​{1}}数据绑定到StackPanel,以便ListView.Height赢得比ListView更大的数据{&#39; s Button

StackPanel

答案 1 :(得分:1)

您可以将较低内容网格的MaxHeight属性绑定到按钮ActualHeight的{​​{1}}。此外,您需要将按钮面板的StackPanel设置为VerticalAlignment

这样,您可以垂直添加更多部件,但仍然坚持按钮面板高度。

Bottom