次のようなコンボボックスがあります。
<ComboBox x:Name="cbGender"
DisplayMemberPath="Value"
ItemsSource="{x:Static patientObjects:Gender.GenderList}"
SelectedIndex="0"
SelectedItem="{Binding Encounter.Patient.Gender,
Mode=TwoWay}"
SelectedValuePath="Id"
StaysOpenOnEdit="True" />
これはすべて、通常の使用では問題なく機能します。ただし、データベースから Encounter.Patient.Gender をロードすると、値がクリアされます。コンボボックスを次に使用すると、Gender.GenderList の一番上の項目が、データベースから読み込まれた値で上書きされました。(私の再現例では、Unknown は Male で上書きされます)。
私の GenderList は、静的な性別プロパティの ObserverableCollection です。これらの各プロパティは、静的な読み取り専用の性別フィールドによってサポートされています。
バッキング フィールドは読み取り専用であるため、コレクションの参照が何らかの形で更新されていると推測されます。しかし、このバインディングでそれを行う方法がわかりません...
推測はありますか?
更新:次のことを試しましたが、効果はありませんでした:
- SelectedIndex と SelectedValuePath の削除
- GenderList コレクションのコレクションへのイベントの追加が変更されました (発生しませんでした)。
- SelectedItem から TwoWay モードを削除する
- Gender.GenderList を に変更します
ReadOnlyObserveableCollection
。