1

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

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

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

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

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

谢谢

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

4

1 回答 1

1

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

在视图(子窗口)中,我有一个事件处理程序,Loaded并在其中执行以下操作:

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

如果有人有任何建议,请随时给他们,我完全是 Silverlight 菜鸟。

于 2012-04-12T19:19:21.740 回答