我在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>
我现在一直想要创建用户控件(可能只有ListView的derieved类??),它会覆盖MeasureOverride,但我不认为这是解决这么小但是有用的“bug”的好方法,它仍然让我遇到麻烦实施解决方案 .
有人可以为这个问题提供一些优雅的解决方案吗?任何想法将不胜感激 .
1 回答
@bartivo:我没有得到与你相同的结果 - 底部水平滚动条似乎不会遮挡最低的项目 . 我想知道你是否在为ListView和ScrollViewer使用自定义ControlTemplate,b / c默认的ScrollViewer模板在第一行(Height =“*”)中有两行ScrollContentPresenter,在第二行中有HorizontalScrollBar(Height = “自动”)从而确保一个不与另一个重叠 .
也许您可以尝试将这些样式用于ListView和ScrollViewer,看看是否仍然出现这个问题: