首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >拉伸空WPF ListView以占用剩余空间

拉伸空WPF ListView以占用剩余空间
EN

Stack Overflow用户
提问于 2010-05-28 09:11:09
回答 2查看 25.2K关注 0票数 38

在动态布局控件(如Stackpanel )中,ListView总是有问题。

现在,我有一个带有Stackpanel作为根控制的窗口。Stackpanel完美地显示并接受了整个窗口。在StackPanel内部还有一些其他控件,比如文本框和按钮,它们都对齐得很好。

最后一个对象是ListView。我希望ListView从StackPanel中获取剩余的空间,但它没有。即使使用VerticalAlignment="Stretch",我也只能得到列标题。只有当项被添加到ListView时,它才会增长。因此,我必须手动设置ListView高度。

如何使ListView填充StackPanel中的剩余空间,即使它是空的?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-05-28 09:43:26

这与ListView无关。这是StackPanel的“错误”。在StackPanel中,子项总是只占用它们所需的空间(在StackPanel的方向上)。StackPanel就是这样设计的。使用DockPanel代替,您可以让最后一项填满使用LastChildFill="true"留下的所有空间(true是默认的,因此不需要明确指定它)。

代码语言:javascript
运行
复制
<DockPanel Background="Green">
    <Button DockPanel.Dock="Top">Text</Button>
    <ListView DockPanel.Dock="Top">
        <ListView.View>
            <GridView>
                <GridViewColumn/>
            </GridView>
        </ListView.View>
    </ListView>     
</DockPanel>
票数 46
EN

Stack Overflow用户

发布于 2010-05-28 09:55:42

用网格怎么样?网格是为这种布局而制作的。DockPanel也是一个很好的建议。

代码语言:javascript
运行
复制
  <Grid>  
    <Grid.RowDefinitions>
      <RowDefinition Height="Auto"/>
      <RowDefinition Height="Auto"/>
      <RowDefinition Height="*"/>
     </Grid.RowDefinitions>

   <TextBlock Grid.Row="0" Text="row1"/>
   <Button Grid.Row="1" Content="row2"/>
   <ListView Grid.Row="2">
     <ListViewItem Content="Text"/>
     <ListViewItem Content="Text1"/>
     <ListViewItem Content="Text2"/>
   </ListView>
  </Grid>

重要的部分是Height="*",这告诉行占用所有可用的空间,如果需要,可以忽略它,因为这是默认行为。

票数 18
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2927785

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档