我有一个解决方案,我根据用户标准生成一个DataGrid(或多个实例)..每个网格通过ObservableCollection继续接收数据
我遇到的问题是滚动表现得很奇怪.这是不稳定的,滚动条会在滚动时调整自己的大小.
比我发现.. CanContentScroll属性!它完全修复了奇怪的滚动行为,带给我暂时的幸福和快乐.
然而,它会导致2个不幸的副作用.
每当我重新创建网格实例并将它们绑定到我的可观察集合时,它会冻结整个窗口5秒钟.当我的网格增长到一个大尺寸时,这种延迟可以持续30秒.
当我调用TradeGrid.ScrollIntoView(TradeGrid.Items(TradeGrid.Items.Count - 1))滚动到底部时,它会跳到底部而不是回到顶部.
还有另一种方法可以实现平滑滚动吗?
我有一个DataGrid与ItemSource填充控制。我还使用过滤器/查询机制来过滤控件的内容。
当未过滤数据网格时,滚动工作正常。但是当我过滤(= 将项目的可见性设置为 false,这会折叠数据网格中的项目)时,滚动变得非常“跳跃”。当我向下滚动时,滚动条变得越来越小,滚动变得很烦人。
我读了一些关于虚拟化的内容,以及一些关于设置DataGrid.ScrollViewer 的内容,但我在 XAML 中没有这些属性可用。
为什么感觉微不足道的东西过于复杂......无论如何,我如何将我的数据网格配置为:
我的 XAML:
<DataGrid Grid.Row="2"
ItemsSource="{Binding ErrorsThatStoppedMachine}"
AutoGenerateColumns="False"
SelectedItem="{Binding SelectedError}"
IsReadOnly="True"
SelectionMode="Single">
<DataGrid.Columns>
<DataGridTextColumn Header="Timestamp" Width="220" Binding="{Binding Path=Timestamp}" />
<DataGridTextColumn Header="ErrorCode" Width="90" Binding="{Binding Path=ErrorCode}" />
<DataGridTextColumn Header="Unit" Width="70" Binding="{Binding Path=Unit}" />
<DataGridTextColumn Header="State" Width="100" Binding="{Binding Path=MachineState}" />
<DataGridTextColumn Header="Message" Width="*" Binding="{Binding Path=Message}" />
</DataGrid.Columns>
<DataGrid.RowStyle>
<Style TargetType="{x:Type DataGridRow}"
d:DataContext="{d:DesignInstance IsDesignTimeCreatable=True, Type=viewModels:ErrorViewModel}">
<Style.Triggers>
<DataTrigger Binding="{Binding IsVisible}" Value="false">
<Setter Property="Visibility" Value="Collapsed" />
</DataTrigger> …Run Code Online (Sandbox Code Playgroud) 我有一个DataGrid,其中每行包含ItemsControl.因此,网格的行可以非常高.如果一行高于网格的高度,我无法滚动查看行的其余部分,因为DataGrid会自动滚动到下一行.也就是说,如果我正在查看第1行的上半部分并单击垂直滚动条的向下箭头,它会跳到第2行的顶部.它不会让我看到第1行的下半部分.我如何制作DataGrid是否可以平滑地滚动行而不是逐行步进?