我正在使用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;
}
答案 0 :(得分:0)
如果将SelectedItem
绑定到视图模型中的属性,则当选择更改时,新选择的项应自动滚动到视图中。如果这种行为不够,你应该在视图中保持滚动逻辑;它不属于视图模型,因为它特定于该特定视图设计。但是,您可能希望在视图模型中添加一个视图可以响应的事件,以启动选择/滚动逻辑。