【发布时间】:2014-03-24 22:38:13
【问题描述】:
我正在编写一个 Windows Phone 应用程序,当我在其中一个页面中显示 ListBox 哪些项目时。
我的目标是在添加新项目时自动向下滚动ListBox,但我无法实现。
我已经阅读了许多有关行为和触发器绑定的示例,但我做不到。
我找不到适合我的有效Event,在那里我可以简单地获取ListBox 的ScrollViewer 并按照我的方法进行(这不是真的需要那样):
var childscount = VisualTreeHelper.GetChildrenCount(MyListBox);
for (int i = 0; i < childscount; i++)
{
if (VisualTreeHelper.GetChild(MyListBox, i) is ScrollViewer)
{
var sv = VisualTreeHelper.GetChild(ic, i) as ScrollViewer;
sv.ScrollToVerticalOffset(sv.ScrollableHeight);
break;
}
}
如果我必须在代码隐藏中编写它,那将没有问题,因为我可以在将新项目添加到集合时引发该方法。
问题是我正在尝试在 MVVM 中执行此操作。
【问题讨论】:
-
我根本看不出这个想法的用处,你为什么要把这段代码移到你的视图模型中。最好的方法是通过继承 ListBox 控件并在添加新项后重新定义行为来制作新的 UI 组件。如果你真的想在视图模型中这样做,你必须让你的页面对你的 UI 可见,这打破了 MVVM 设计模式。
标签: c# xaml mvvm windows-phone-8 windows-phone