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 및 RelayConfigXAML 있습니다
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에서 현재 항목으로 비어있는 항목을 얻습니다.
사실, 그렇지 않습니다. 이전 작업 단위에로드되었습니다. 그리고 그것은 문제로 보입니다. 음,하지만 SelectedValuePath = "Id"가 처리해야합니까? – Jatin
Diego, DefaultRelayConfig는 RelayConfigs 컬렉션의 일부가 아닙니다. (선택을 요구 했으므로 혼란 스럽습니다). 그러나 DefaultRelayConfig.Id와 RelayConfigs RelayConfig.Id는 동일하므로 SelectedValuePath = "Id"가 RelayConfigs 컬렉션에서 올바른 RelayConfig를 선택해야합니다. – Jatin
@DiegoModoloRiberio - 해명을 요구하는 것은 대답이 아니라 주석이어야합니다. –