【发布时间】:2015-10-13 08:30:55
【问题描述】:
我有一个包含列表项的 Datagrid,此自定义列表中的一个属性是一个布尔值,它确定可见性(可见性可以通过复选框切换)。
我有这样的工作:
<Style x:Key="RowStyle" TargetType="DataGridRow">
<Style.Triggers>
<DataTrigger Binding="{Binding Path=IsVisible}" Value="False">
<Setter Property="Visibility" Value="Collapsed"/>
</DataTrigger>
<DataTrigger Binding="{Binding Path=IsVisible}" Value="True">
<Setter Property="Visibility" Value="Visible"/>
</DataTrigger>
</Style.Triggers>
</Style>
我的数据网格是这样的:
<DataGrid Name="dataList" DataContext="{StaticResource DataViewSource}" ItemsSource="{Binding}"
ItemContainerStyle="{StaticResource RowStyle}"
ScrollViewer.VerticalScrollBarVisibility="Auto"
ScrollViewer.HorizontalScrollBarVisibility="Auto"
AutoGenerateColumns="False"
CanUserAddRows="False"
CanUserDeleteRows="False"
IsReadOnly="True"
CanUserReorderColumns="True" CanUserSortColumns="True"> ..etc
假设我有 100 行,当切换可见性时,其中 80 行已折叠。
问题是:当项目的可见性改变时,滚动条似乎没有更新。从外观上看,这 80 行似乎仍然可见(小拖动条),但是当尝试滚动可见的 20 个项目时,它需要更多的滚动,因为滚动条假设它仍然必须滚动 100物品什么的。
有没有办法通知滚动条可见性变化?还是我应该自己处理滚动事件并从数据网格中删除滚动条?
【问题讨论】:
标签: c# wpf scroll datagrid visibility