ScrollViewer对象滚动到底部,引用ListView的子视觉对象在ViewModel(MVVM)中
本文关键字:对象 ViewModel 视觉 MVVM 滚动 底部 ListView 引用 ScrollViewer | 更新日期: 2023-09-27 18:31:16
我正在使用MVVM架构重写应用程序。如何实现 VisualTreeHelper.GetChild
方法,以使列表视图的子视觉对象滚动到视图模型 (MVVM) 中的底部。我将此代码从后面的代码移动到 ViewModel。我需要帮助在我的视图模型中引用 ListView 对象,而无需通过修复注释代码来引用窗口控件。
/// <summary>
/// Jumps to pending feature.
/// </summary>
private bool JumpToPending()
{
foreach (Book book in BookList)
{
if (book.Verified == VerifiedType.Pending)
{
//By scrolling to the bottom first, we will ensure the selected feature will appear at the top of the listview
//instead of the bottom.
//ScrollViewer sv = VisualTreeHelper.GetChild(VisualTreeHelper.GetChild(listofBooks, 0), 0) as ScrollViewer;
//sv.ScrollToBottom();
//listofBooks.SelectedItem = book;
//listofBooks.ScrollIntoView(book);
//sv.LineUp();
return true;
}
}
return false;
}
如果将
SelectedItem
绑定到视图模型中的属性,则当选择更改时,新选择的项目应自动滚动到视图中。 如果该行为还不够,则应将滚动逻辑保留在视图中;它不属于视图模型,因为它特定于该特定视图设计。但是,您可能希望在视图模型中添加一个事件,以便视图可以对此做出反应,以便启动选择/滚动逻辑。