【发布时间】:2011-05-29 17:18:41
【问题描述】:
我在 StackPanel 中有一个 WPF ListView,Height="Auto"。它能做我想做的事真是太好了——根据 ListView 中包含的所有项目来改变它的高度。我的 ListView 上也有 HorizontalScrollBarVisiblity="Auto",这符合我的需要。
当我的 ListView 的列的整个宽度大于 ListView 控件的宽度时会出现问题(即用户减小窗口和此控件的宽度)。在那种情况下,显然会出现水平滚动条 - 没关系。问题是这个滚动条覆盖了 ListView 项目的最后一个(底部)项目,因此它部分不可见。
没有出现垂直滚动条,这没关系 - 我不想要它。我只想正确计算我的 ListView 高度,因此它会考虑显示的水平滚动条的高度并将其包含在计算中,以便所有项目都完全可见。
Xaml 代码示例:
<ListView Name="lvProcedures" ItemsSource="{Binding Path=Procedures}" SelectionMode="Single">
<ListView.View>
<GridView AllowsColumnReorder="False" ColumnHeaderToolTip="Lista zabiegów">
<GridViewColumn DisplayMemberBinding="{Binding Path=procedure}" Header="A" Width="150" />
<GridViewColumn DisplayMemberBinding="{Binding Path=location}" Header="B" Width="100" />
<GridViewColumn DisplayMemberBinding="{Binding Path=material}" Header="C" Width="180" />
<GridViewColumn DisplayMemberBinding="{Binding Path=other}" Header="D" Width="180" />
<GridViewColumn DisplayMemberBinding="{Binding Path=description}" Header="E" Width="400" />
</GridView>
</ListView.View>
</ListView>
我现在想创建覆盖 MeasureOverride 的用户控件(可能只有 ListView 的派生类??),但我认为这不是解决如此小但令人恼火的“错误”的好方法,而且它仍然让我难以实施解决方案。
有人可以为这个问题提供一些优雅的解决方案吗? 任何想法将不胜感激。
【问题讨论】:
-
通常情况下是这样的。 Horizontal ScrollViewer 将出现在最后一个 ListViewItem 下方。您正在谈论的问题只会在 ListView 的高度因任何原因受到限制时才会发生,例如明确设置高度
标签: c# wpf listview height horizontal-scrolling