【发布时间】:2016-06-02 13:30:41
【问题描述】:
我正在尝试构建一个具有三个不确定长度的数据绑定列表视图控件的窗口。我希望这三个都在一个滚动视图中。
简单来说,下面的代码就是我希望它工作的方式。当然,示例 xaml 代码的结果是 scrollviewer 内容超出了窗口并且不可滚动。
我尝试使用网格控件,但效果并不理想。我不想为每个列表视图设置固定的高度和单独的滚动条,因为可能存在可变数量的数据,这会导致不必要的滚动。
谁能提供一种在一个滚动条中包含多个可变内容列表视图的方法?
<Window x:Class="AmultiListTest"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:SomeNamespace"
mc:Ignorable="d"
Title="AmultiListTest"
Height="300"
Width="300">
<StackPanel>
<ScrollViewer>
<StackPanel Height="250">
<Label>List number one</Label>
<ListView>
<ListViewItem>list 1 Item 1</ListViewItem>
<ListViewItem>list 1 Item 2</ListViewItem>
<ListViewItem>list 1 Item 3</ListViewItem>
<ListViewItem>list 1 Item 4</ListViewItem>
<ListViewItem>list 1 Item 5</ListViewItem>
<ListViewItem>list 1 Item 6</ListViewItem>
<ListViewItem>list 1 Item 7</ListViewItem>
<ListViewItem>list 1 Item 8</ListViewItem>
<ListViewItem>list 1 Item 9</ListViewItem>
</ListView>
<Label>List number two</Label>
<ListView>
<ListViewItem>list 2 Item 1</ListViewItem>
<ListViewItem>list 2 Item 2</ListViewItem>
<ListViewItem>list 2 Item 3</ListViewItem>
<ListViewItem>list 2 Item 4</ListViewItem>
<ListViewItem>list 2 Item 5</ListViewItem>
<ListViewItem>list 2 Item 6</ListViewItem>
</ListView>
<Label>List number three</Label>
<ListView>
<ListViewItem>list 3 Item 1</ListViewItem>
<ListViewItem>list 3 Item 2</ListViewItem>
<ListViewItem>list 3 Item 3</ListViewItem>
<ListViewItem>list 3 Item 4</ListViewItem>
</ListView>
</StackPanel>
</ScrollViewer>
</StackPanel>
【问题讨论】:
-
就在我的脑海中,我建议您尝试从内部 StackPanel 中移除 250 的固定高度,并将外部 StackPanel 更改为网格。 Grid 将符合其父级(在本例中为 Window)的大小。这将强制 Grid 的内容 (ScrollViewer) 符合 Grid 的大小,这将触发 ScrollViewer 的滚动行为。如果这不起作用,至少您不会浪费太多时间尝试它。
-
并移除外部 StackPanel - 你给它无限的高度。使用网格。
标签: wpf