2009-03-17 9 views
0

頻繁に更新する観測可能なコレクションにバインドされたリストビューコントロールがあります。コレクションを更新すると、コレクションを消去してから値を追加します。これは単純な変更のための少し過度のものですが、それは非常に簡単であり、仕事を成し遂げます。そうすることで、リストビューコントロールで選択されたアイテムが失われ、更新後に選択した状態を維持する方法がわかりません。ListViewのバックエンドコレクションを変更した後の選択状態を維持する

SelectedValue="{Binding Path=SelectedDevice, Mode=TwoWay} 

そしてによって私のコレクションを更新します:

string PreviouslySelectedDevice = this.SelectedDevice; 
aCollection.Clear(); 
// ... Add Items ... 
this.SelectedDevice = PreviouslySelectedDevice; 

私は結合双方向を期待していた

は、私は当初、私は、次の(WPF)を使用して、SelectedValueのを双方向に結合することができると思いました自動的にlistViewコントロールに反映されるバックエンドプロパティを変更することができますが、これは機能しません。前もって感謝します!

答えて

0

あなたのバインディングはSelectedValueを更新する必要があります。 SelectedDeviceDependencyPropertyですか、INotifyPropertyChangedを実装していますか?

+0

SelectedDeviceは、選択したデバイス(SelectedDevice ID、SelectedDevice Name)を格納するKeyValuePair です。 KeyValuePairはINotifyPropertyChangedを実装していないので、意図したとおりにコントロールが更新されていないという問題があると思われます。 – Joel

+0

INotifyPropertyChangedを実装する必要があるSelectedDeviceプロパティを持つクラス、またはSelectedDeviceプロパティがDependencyPropertyである必要があるクラスです。 –