2012-05-25 3 views
0

Резюме ВыпускаКаскадных два выпадающих списков - Ребенок выпадающий не выбирают текущего значение

При использовании 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" 

Вот свойства отступающих и код для загрузки выпадающих списков в ViewModel

ViewModel

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

Является ли опция DefaultRelayConfig частью «RelayConfigs»?

+0

Собственно, это не так. Его загрузили в предыдущее подразделение работы. И это, похоже, проблема. Ну, но SelectedValuePath = "Id" должен позаботиться об этом? – Jatin

+0

Diego, DefaultRelayConfig не входит в состав коллекции RelayConfigs (вы попросили выделить, я смущен тем, что вы имели в виду). Но DefaultRelayConfig.Id и RelayConfigs RelayConfig.Id одинаковы, поэтому я надеялся, что SelectedValuePath = «Id» должен выбрать правильный RelayConfig из коллекции RelayConfigs. – Jatin

+0

@DiegoModoloRiberio - просить разъяснений должен быть в комментарии, а не в ответе. –