1

Silverlight 4MVVM パターンを使用しています。私のビューには、ビュー モデルのプロパティにバインドされたプロパティを持つ ListBox がありItemsSourceます。SelectedItem

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

このビューがロードされたときに、特定のアイテムを選択したい場合があります。これらのケースSelectedItemでは、それに応じてビュー モデルのコンストラクターでプロパティを設定するだけです。これは、ビューがロードされたときに目的の項目が選択されるという点でうまく機能します。

ただし、ListBox に多数の項目があり、垂直スクロールバーがある場合、ListBox は選択されたリスト項目まで自動的に下にスクロールしません。

ビューがロードされたときに、MVVMパターンを使用して、ListBoxを選択した項目に自動スクロールさせることはSilverlightで可能ですか?

ありがとう

注: Silverlight 5 では、この問題は発生しません。これは、Silverlight 4 のバグ (または「機能」) に違いありません。以下の私の回避策は SL5 で機能しますが、必要ありません...

4

1 に答える 1

1

結局、これはUI関連の問題であるため、MVVMパターンを曲げているように見えますが、それを壊していないように見える次のルートに行きました。

ビュー(子ウィンドウ)には、イベントのイベントハンドラーがLoadedあり、そこでこれを行います:

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

誰か提案があれば、遠慮なく言ってください。私は完全な Silverlight 初心者です。

于 2012-04-12T19:19:21.740 に答える