После некоторых экспериментов мне удалось найти рабочее решение. Приведенное ниже позволяет мне иметь два комбинированных списка, зависящих от одного и того же источника данных, а также друг от друга. Я уверен, элегантный подход, но это, кажется, работает.
1) В свою коллекцию ObservableCollection я добавил два дополнительных свойства: ToSelected и FromSelected.
2) Затем, вместо привязки к комбинированным спискам, я заполнил их каталог через цикл. Не лучший способ сделать это, но, похоже, это был самый прямой путь.
foreach (Countries.Country currentCnty in CountryList)
{
ComboBoxItem toItem = new ComboBoxItem();
toItem.Content = currentCnty;
CmboToCountry.Items.Add(toItem);
ComboBoxItem fromItem = new ComboBoxItem();
fromItem.Content = currentCnty;
CmbFromCountry.Items.Add(fromItem);
}
3) Затем я создал метод UpdateLogic. Это просто перебирает ObservableCollection, устанавливая выбранные записи для комбинированных списков From и To.
4) Затем при изменении выделения для каждого выпадающего списка я добавил следующее, чтобы задать видимость других элементов выпадающего списка. Например, поле со списком «В страну» устанавливает видимость элементов «Из страны» и наоборот.
//Update the underlying collection with selected items
UpdateLogic((Countries.Country)CmboToCountry.Content, (Countries.Country)CmboFromCountry.Content);
for (int iLoop = 0; iLoop < CmboToLocation.Items.Count; iLoop++)
{
ComboBoxItem currentItem = CmboToCountry.Items[iLoop] as ComboBoxItem;
Countries.Country currentCountry = (Countries.Country)currentItem.Content;
currentItem.Visibility = ((currentCountry.IsFrom) && (currentCountry.ID > 0))
? Visibility.Collapsed : Visibility.Visible;
}
Бизнес-требование наличия двух взаимозависимых комбинированных списков было интересной задачей. Надеюсь, это поможет кому-то в будущем. Хотя я уверен, что есть более элегантное решение для выполнения этой задачи.