2012-05-25 3 views
0

문제 요약두 개의 콤보를 계단식 - 아이 콤보 상자는 현재의 값을 선택하지

가 오는 곳, 자식 콤보가 현재 항목 대신 빈 항목 (나도 몰라을 선택하지 않는 2 계단식 콤보 상자를 사용하여 에서!)가 선택됩니다. 아래로

문제 상세

나는 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" 
다음

기가되는 특성이 있으며, 코드는 뷰 모델에 콤보를로드

뷰 모델

: 연극에서 두 기관은 StandardRack 및 RelayConfig

XAML 있습니다

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. } 

위 코드는 comboboxes (StandardRacks 및 RelayConfigs) 항목을 모두 올바르게로드합니다. 그러나 RelayConfigs 선택한 값은 XAML에서 가리키는 값으로 설정되지 않습니다. 대신 RelayConfigs Combobox에서 현재 항목으로 비어있는 항목을 얻습니다.

답변

0

'RelayConfigs'선택의 'DefaultRelayConfig'부분이 있습니까?

+0

사실, 그렇지 않습니다. 이전 작업 단위에로드되었습니다. 그리고 그것은 문제로 보입니다. 음,하지만 SelectedValuePath = "Id"가 처리해야합니까? – Jatin

+0

Diego, DefaultRelayConfig는 RelayConfigs 컬렉션의 일부가 아닙니다. (선택을 요구 했으므로 혼란 스럽습니다). 그러나 DefaultRelayConfig.Id와 RelayConfigs RelayConfig.Id는 동일하므로 SelectedValuePath = "Id"가 RelayConfigs 컬렉션에서 올바른 RelayConfig를 선택해야합니다. – Jatin

+0

@DiegoModoloRiberio - 해명을 요구하는 것은 대답이 아니라 주석이어야합니다. –

관련 문제