我有两个组合的“Make”和“Model”,它们的 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");
}
}
我能想到几个类似的不优雅的解决方案——但一定有更好的方法吗?!任何帮助表示赞赏!