2012-03-15 10 views
0

MVVM Lightの使用リストボックスはいくつかのアイテムのコレクションにバインドされています。 アイテムの1つが選択されたものです。このコードではWP7リストボックス - バインディングを介して選択したアイテムが確実に表示されるようにする方法

それは完璧に動作し、ViewModelの構造が正しく更新されています

<Name="listBox1" 
ItemsSource="{Binding Path=Models}" 
SelectedItem="{Binding Path=csProfile.Model, Mode=TwoWay}"> 

私の問題は、選択した項目が最初の項目ではない場合、私はページを入力すると、それは可視およびユーザーではないということです前の選択が何だったのか分からない。

どのようにリストボックスに常に選択したアイテムが表示されるようにすることができますか?

おそらくプロパティまたはバインディングを経由します。

m

答えて

0

表示する内容を設定するためにバインドできるプロパティはありません。代わりにListBox内のScrollViewerでScrollToVerticalOffset()を呼び出します。

0

私はあなたがScrollIntoViewメソッドを探していると思います。同様のトピックは、ここで議論されました: Automatic Scrolling in a Silverlight List Box

APIリファレンスはここにある:http://msdn.microsoft.com/en-us/library/system.windows.controls.listbox.scrollintoview(VS.95).aspx

UpdateLayout()を呼び出すと、選択した項目についてのscrollIntoViewを呼び出す前に必要であると考えられます。私は次のコードを追加しようとしました

+0

:listBox1_SelectionChanged 'ます。private void(オブジェクト送信者、SelectionChangedEventArgs E) \t \t { \t \t \t listBox1.UpdateLayoutを(); \t \t \t listBox1.ScrollIntoView(listBox1.SelectedItem); \t \t} '動作しません。 –

+0

回避策を見つけました。私はcontinerコントロールのイベントにアップデートを置きます。 –