层叠两个组合框 - 儿童组合框不选择当前值
问题描述:
当使用2个级联组合框,它是从哪里来的孩子组合框不选择当前项目,而不是一个空项(我不知道从!)被选中。
问题详情
我在XAML中声明了两个组合框下面给出。在剧中的两个实体是StandardRack和RelayConfig
XAML:
<ComboBox ItemsSource="{Binding StandardRacks}" DisplayMemberPath="Name"
SelectedItem="{Binding StandardRack, Mode=TwoWay}" SelectedValuePath="Id"
<ComboBox ItemsSource="{Binding RelayConfigs}" DisplayMemberPath="DisplayName"
SelectedValue="{Binding DefaultRelayConfig, Mode=TwoWay}" SelectedValuePath="Id"
这里有后盾性能和代码加载组合框在视图模型
视图模型
private ObservableCollection<StandardRack> _standardRacks;
public ObservableCollection<StandardRack> StandardRacks {
get { return _standardRacks; }
set { _standardRacks = value; RaisePropertyChanged(() => StandardRacks); }
}
private StandardRack _standardRack;
public StandardRack StandardRack {
get { return _standardRack; }
set {
if (_standardRack != value) {
_standardRack = value;
LoadRelayConfigs();
RaisePropertyChanged(() => StandardRack);
}
}
}
private ObservableCollection<RelayConfig> _relayConfigs;
public ObservableCollection<RelayConfig> RelayConfigs {
get { return _relayConfigs; }
set { _relayConfigs = value; RaisePropertyChanged(() => RelayConfigs); }
}
private RelayConfig _defaultRelayConfig;
public RelayConfig DefaultRelayConfig {
get { return _defaultRelayConfig; }
set { _defaultRelayConfig = value; RaisePropertyChanged(() => DefaultRelayConfig); }
}
private void LoadRack() {
StandardRacks = new ObservableCollection<StandardRack>(
unitOfWork.StandardRackRepository.GetQueryable().Include(sr => sr.StandardRelay).ToList());
if (StandardRacks.Count > 0) {
StandardRack = Rack.StandardRack; //Set the current value of StandardRacks combobox
}
}
//Loads RelayConfigs Combobox based on Current Value of StandardRacks Combobox
private void LoadRelayConfigs() {
RelayConfigs = new ObservableCollection<RelayConfig>(
unitOfWork.RelayConfigRepository.GetQueryable()
.Where(rc => rc.StandardRelays.Any(srl => srl.Id == StandardRack.StandardRelay.Id)).ToList());
DefaultRelayConfig = Rack.DefaultRelayConfig; //Set Current Value of RelayConfigs Combobox. Does not work.
}
上面的代码正确加载了组合框(StandardRacks和RelayConfigs)项。但是,RelayConfigs选择的值未设置为从XAML指向的值。相反,我在RelayConfigs Combobox中获得一个空项目作为当前项目。
答
'RelayConfigs'选择的'DefaultRelayConfig'部分是?
其实并非如此。它装载在以前的Unit Of Work中。这似乎是问题。那么,但是SelectedValuePath =“Id”应该照顾那个? – Jatin
迭戈,DefaultRelayConfig不是RelayConfigs集合的一部分(你要求选择,我很困惑你的意思)。但是DefaultRelayConfig.Id和RelayConfigs RelayConfig.Id是相同的,所以我希望SelectedValuePath =“Id”应该从RelayConfigs集合中选择正确的RelayConfig。 – Jatin
@DiegoModoloRiberio - 要求澄清应该在评论中,而不是回答。 –