У меня есть два комбинированных списка, один отображает данные о стране, а второй отображает города.
Я связываю этот комбинированный список, используя десериализованные данные из файла JSON, структурированного таким образом:
[
{
"country": "Albania",
"city": [
"Elbasan",
"Petran",
"Pogradec",
"Shkoder",
"Tirana",
"Ura Vajgurore"
]
}
]
Десериализация его и извлечение данных следующим образом:
public partial class SomeUCClass: UserControl
{
readonly UtilityMethods utilityMethods = new UtilityMethods();
private string jsonFilePath = @"C:\SomePath\CountryData.json";
public ObservableCollection<AllCountriesData> countryCityData { get; set; }
public SomeUCClass()
{
InitializeComponent();
countryCityData = new ObservableCollection<AllCountriesData>();
DataContext = this;
}
private void SomeUCClass_Loaded(object sender, RoutedEventArgs e)
{
try
{
using (StreamReader streamReader = new StreamReader(jsonFilePath))
{
string actualJsonFile = streamReader.ReadToEnd();
var x = JsonConvert.DeserializeObject<List<AllCountriesData>>(actualJsonFile);
foreach (var countryCityDataObject in x)
{
countryCityData.Add(new AllCountriesData() { Country = countryCityDataObject.Country, Cities = new ObservableCollection<string>() { countryCityDataObject.MyString.ToString() } });
}
}
}
catch (Exception ex)
{
utilityMethods.ErrorMessage(ex.Message);
}
}
}
public class AllCountriesData
{
public string Country { get; set; }
public ObservableCollection<string> Cities { get; set; }
public string MyString
{
get { return Convert.ToString(Cities); }
set { }
}
}
Наконец, связывание его с выпадающими списками следующим образом:
<ComboBox x:Name="CmbCountry"
ItemsSource="{Binding countryCityData}"
DisplayMemberPath="Country"/>
<ComboBox x:Name="CmbCities"
ItemsSource="{Binding countryCityData}"
DisplayMemberPath="Cities"/>
Результатом этого процесса является заполнение поля со списком «Страна», в то время как поле со списком «Город» отображает серию элементов, помеченных (Коллекция).
Вот скриншоты обоих сценариев. ![](https://i.stack.imgur.com/FIFCM.png)
![](https://i.stack.imgur.com/3PK4z.png)
Мне нужно, чтобы в поле со списком "Города" отображались соответствующие города, прикрепленные к"Кантри" комбобокс.
Что / где я делаю / иду не так и как я могу это исправить?