自动滚动到ListBox中的选定项目

时间:2012-04-11 21:15:48

标签: silverlight listbox

我正在使用 Silverlight 4 MVVM模式。在我看来,我有一个ListBox,它的ItemsSourceSelectedItem属性绑定到视图模型中的属性。

<ListBox ...
    ItemsSource="{Binding AllItems, Mode=TwoWay}"
    SelectedItem="{Binding SelectedItem, Mode=TwoWay}">

在某些情况下加载此视图时,我想要选择一个特定的项目;在这些情况下,我只是相应地在视图模型的构造函数中设置SelectedItem属性。这非常有效,因为当加载视图时,选择了所需的项目。

但是,如果ListBox中有许多项目存在垂直滚动条,则ListBox不会自动向下滚动到所选列表项。

在Silverlight中,使用MVVM模式,是否可以在加载视图时让ListBox自动滚动到所选项目?

由于

注意:Silverlight 5不会出现此问题。这必须是Silverlight 4的错误(或“功能”)。我的解决方法适用于SL5,但不需要...

1 个答案:

答案 0 :(得分:1)

我最终走了以下路线,似乎弯曲 MVVM模式但是没有打破它,因为这毕竟是与UI相关的问题。

在视图(子窗口)中,我有Loaded事件的事件处理程序,我在那里执行此操作:

if (viewModel.SelectedItem != null)
{
    myListBox.UpdateLayout();
    myListBox.ScrollIntoView(viewModel.SelectedItem);
}

如果有人有任何建议随时给他们,我就是一个完整的Silverlight菜鸟。