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

时间:2014-11-20 14:03:03

标签: c# wpf mvvm

我正在使用MVVM架构重写应用程序。如何实现VisualTreeHelper.GetChild方法以使listview的子视觉对象滚动到ViewModel(MVVM)的底部。我将此代码从后面的代码移到了ViewModel。我需要帮助在我的viewmodel中引用ListView对象而不通过修复注释代码来引用Windows控件。

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

}

1 个答案:

答案 0 :(得分:0)

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