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;
}

ScrollViewer对象滚动到底部,引用ListView的子视觉对象在ViewModel(MVVM)中

如果将

SelectedItem绑定到视图模型中的属性,则当选择更改时,新选择的项目应自动滚动到视图中。 如果该行为还不够,则应将滚动逻辑保留在视图中;它不属于视图模型,因为它特定于该特定视图设计。但是,您可能希望在视图模型中添加一个事件,以便视图可以对此做出反应,以便启动选择/滚动逻辑。