当前位置: 首页 > 编程语言 > C#

检查WPFDataGrid中的可见行Share

时间:2023-04-10 14:20:15 C#

CheckingVisibleRowsinWPFDataGrid我想知道的是,当用户滚动时,是否有办法知道顶部可见行是什么。理想情况下,我希望能够连接事件以了解用户何时滚动和滚动,检查顶部可见行是什么以更新一些信息。如何在DataGrid的ScrollViewer上订阅ScrollViewer.ScrollChanged事件?它的事件参数非常广泛,描述了ScrollViewer移动了多少以及它的新垂直偏移量是多少。另外,根据MSDN:如果CanContentScroll为真,则ExtentHeight、ScrollableHeight、ViewportHeight和VerticalOffset属性的值是项目数。如果CanContentScroll为false,则这些属性的值是“设备无关像素”。CanContentScroll对于DataGrid的ScrollViewer确实如此。您所要做的就是找到ScrollViewer:ScrollViewerscrollview=FindVisualChild(dataGrid);使用FindVisualChild的实现,它可以在不同的地方找到(比如这里:FindingcontrolsinWPFitemscontrol)。使用以下对我有用://mHorizo??ntalScrollBar是Horizo??ntalScrollBar子类控件的实例//获取项目总数nTotalCount=DataGrid1.Items.Count;//获取第一个可见行索引nFirstVisibleRow=mHorizo??ntalScrollBar.Value;//获取最后一个可见行索引nLastVisibleRow=nFirstVisibleRow+nTotalCount-mHorizo??ntalScrollBar.Maximum;这是一种过于复杂的方法,但它可能会起作用。首先,继承DataGridRowsPresenter,重写OnViewportOffsetChanged方法。然后,复制数据网格的标准控件模板并将DataGridRowsPresenter替换为您自己的。我将相对于视口的行命中测试的细节留给你;-)。具体来说,你想完成什么?也许我们可以想出一个更好的方法,因为这可能非常脆弱并且需要大量额外的工作(即,如果他们更新控件模板以使其保持同步)。检测滚动就像现在您必须获取ScrollViewer实例一样简单:...}(不确定FindVisualChild起源于哪里,但是有很多实现,例如这里)然后你可以去上面是C#学习教程:检查WPFDataGrid中的可见行以共享所有内容,如果有用的话需要了解更多C#学习教程的你,希望你多多关注——intfirstRow=(int)scroll.VerticalOffset;intlastRow=(int)scroll.VerticalOffset+(int)scroll.ViewportHeight+1;本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: