Резюме ВыпускаКаскадных два выпадающих списков - Ребенок выпадающий не выбирают текущего значение
При использовании 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 в качестве текущего элемента.
Собственно, это не так. Его загрузили в предыдущее подразделение работы. И это, похоже, проблема. Ну, но SelectedValuePath = "Id" должен позаботиться об этом? – Jatin
Diego, DefaultRelayConfig не входит в состав коллекции RelayConfigs (вы попросили выделить, я смущен тем, что вы имели в виду). Но DefaultRelayConfig.Id и RelayConfigs RelayConfig.Id одинаковы, поэтому я надеялся, что SelectedValuePath = «Id» должен выбрать правильный RelayConfig из коллекции RelayConfigs. – Jatin
@DiegoModoloRiberio - просить разъяснений должен быть в комментарии, а не в ответе. –