WPF 数据网格 BringIntoView 行为
WPF datagrid BringIntoView behaviour
在 WPF 数据网格中,当用户单击网格底部部分可见的行时,该行将进入视图。网格将滚动到足以让被点击的行完全可见,这样顶行仍然完全可见,这意味着在用户点击的底部会有另一个部分可见的行。
对于这种行为,如果用户双击底部部分可见的行,网格将向上移动两行,并且将选择初始选定行下方的行。
可以通过在数据网格上设置 ScrollViewer.CanContentScroll="False"
来更改此行为。使用此设置,部分可见的行将进入视图,并将成为最底部可见的行,而最顶部的行将变得部分可见。
但是,这会禁用网格上的行虚拟化,这是我不想要的。有没有其他方法可以在不禁用行虚拟化的情况下更改 BringIntoView 功能?
将 属性 VirtualizingPanel.ScrollUnit
更改为 DataGrid
上的 Pixel
应该可以提供您需要的行为。
<DataGrid ItemsSource="{Binding Data}" VirtualizingPanel.ScrollUnit="Pixel">
...
</DataGrid>
在 WPF 数据网格中,当用户单击网格底部部分可见的行时,该行将进入视图。网格将滚动到足以让被点击的行完全可见,这样顶行仍然完全可见,这意味着在用户点击的底部会有另一个部分可见的行。
对于这种行为,如果用户双击底部部分可见的行,网格将向上移动两行,并且将选择初始选定行下方的行。
可以通过在数据网格上设置 ScrollViewer.CanContentScroll="False"
来更改此行为。使用此设置,部分可见的行将进入视图,并将成为最底部可见的行,而最顶部的行将变得部分可见。
但是,这会禁用网格上的行虚拟化,这是我不想要的。有没有其他方法可以在不禁用行虚拟化的情况下更改 BringIntoView 功能?
将 属性 VirtualizingPanel.ScrollUnit
更改为 DataGrid
上的 Pixel
应该可以提供您需要的行为。
<DataGrid ItemsSource="{Binding Data}" VirtualizingPanel.ScrollUnit="Pixel">
...
</DataGrid>