「Make」と「Model」の 2 つのコンボがあります。それらの SelectedValue プロパティは、ModelID と MakeID を持つ Vehicle オブジェクトにバインドされています。
ヘレスモデル...
<ComboBox DisplayMemberPath="Description" ItemsSource="{Binding Path=ModelSpecs}" SelectedValue="{Binding Path=Vehicle.ModelID}" SelectedValuePath="ID" />
ユーザーは別のコントロールで Vehicles を検索できます。これにより、基になる Vehicle オブジェクトが交換されます。同じ Make の車両を切り替えると、すべて正常に動作しますが、Make が変更された場合は、データベースに移動して ModelSpec コレクションをリロードします。バインディングを更新する必要があるため、コンボにはモデルの説明が表示されません。
私の現在の回避策は、モデルをリロードするメソッドの最後にこれを追加することです。これは正常に機能しますが、特にエレガントなソリューションではありません。
var modelID = ViewModel.Vehicle.ModelID;
ViewModel.Vehicle.ModelID = string.Empty;
ViewModel.Vehicle.ModelID = modelID;
基本的に、INotifyPropertyChanged をトリガーしているだけです ...
private string _modelID;
public string ModelID
{
get { return _modelID; }
set
{
if (_modelID == value) return;
_modelID = value;
OnPropertyChanged("ModelID");
}
}
私は似たような洗練されていない解決策をいくつか思いつくことができますが、もっと良い方法があるに違いありません! どんな助けでも大歓迎です!