我正在使用 Silverlight 4 和 MVVM模式。在我看来,我有一个ListBox,它的ItemsSource
和SelectedItem
属性绑定到视图模型中的属性。
<ListBox ...
ItemsSource="{Binding AllItems, Mode=TwoWay}"
SelectedItem="{Binding SelectedItem, Mode=TwoWay}">
在某些情况下加载此视图时,我想要选择一个特定的项目;在这些情况下,我只是相应地在视图模型的构造函数中设置SelectedItem
属性。这非常有效,因为当加载视图时,选择了所需的项目。
但是,如果ListBox中有许多项目存在垂直滚动条,则ListBox不会自动向下滚动到所选列表项。
在Silverlight中,使用MVVM模式,是否可以在加载视图时让ListBox自动滚动到所选项目?
由于
答案 0 :(得分:1)
我最终走了以下路线,似乎弯曲 MVVM模式但是没有打破它,因为这毕竟是与UI相关的问题。
在视图(子窗口)中,我有Loaded
事件的事件处理程序,我在那里执行此操作:
if (viewModel.SelectedItem != null)
{
myListBox.UpdateLayout();
myListBox.ScrollIntoView(viewModel.SelectedItem);
}
如果有人有任何建议随时给他们,我就是一个完整的Silverlight菜鸟。