我有一个WPF中的DataGrid,它在TabItem中。当该网格被填充时,我希望它滚动到底部,所以我会在设置ItemsSource后对最后一个项目调用ScrollIntoView。当包含DataGrid的选项卡被选中时(网格在屏幕上),这一切都很好运行,但是如果网格不在屏幕上因为选择了其他选项卡,则ScrollIntoView无效。唯一影响ScrollIntoView是否有效的因素似乎是在调用时网格是否实际在屏幕上。这是已知的行为吗?
我尝试过调用UpdateLayout并使用Dispatcher.BeginInvoke来延迟ScrollIntoView。但这些措施都没有任何区别。
是否有一种非hacky的方法来确保如果网格在屏幕外被填充(例如选择另一个选项卡时),可以确保我可以获得所需的滚动,准备好当DataGrid被带到屏幕上时(通过选择其包含的选项卡)?我需要做一些hacky的事情,比如检测DataGrid何时可见并执行ScrollIntoView吗?
我尝试过调用UpdateLayout并使用Dispatcher.BeginInvoke来延迟ScrollIntoView。但这些措施都没有任何区别。
是否有一种非hacky的方法来确保如果网格在屏幕外被填充(例如选择另一个选项卡时),可以确保我可以获得所需的滚动,准备好当DataGrid被带到屏幕上时(通过选择其包含的选项卡)?我需要做一些hacky的事情,比如检测DataGrid何时可见并执行ScrollIntoView吗?