У меня работает. Хотя я полагаю, что вы устанавливаете неправильный элемент в первом комбинированном списке. В настоящее время ваш список "Страна" заполнен следующими странами: "США", "Китай", "". Всякий раз, когда вы выбираете третий (""), вы получите непустой список состояний.
Если вы хотите, чтобы в вашей текущей реализации были государства для каждой страны, я бы предложил следующее:
List<Country> list = new List<Country>
{
new Country{ Name = "USA", States = GetStates() },
new Country{ Name = "China", States = new List<State>() },
};
А также, я бы рекомендовал преобразовать это в MVVM с привязкой, имеющей модель, которая содержит выбранную страну и обновляющую второе значение комбинированного списка соответственно:
public class MainViewModel : INotifyPropertyChanged
{
private Country _selectedCountry;
public ObservableCollection<Country> Countries { get; }
public Country SelectedCountry
{
get { return _selectedCountry; }
set { _selectedCountry = value; RaisePropertyChanged("SelectedCountry"); RaisePropertyChanged("States"); }
}
public State[] States
{
get
{
if (_selectedCountry == null)
return new State[0];
return _selectedCountry.States.ToArray();
}
}
}
И вашему представлению (xaml) не нужно будет определять события и использовать только привязку.