Как использовать ключ словаря в поле со списком вместо значения - PullRequest
0 голосов
/ 02 ноября 2019

У меня есть статический словарь, который я использую в качестве ItemsSource комбинированного списка:

public static Dictionary<string, Country> Countries => new Dictionary<string, Country>()
{
   { "CY", new Country( "CY", "Cyprus" ), ... },
   { "B", new Country( "B", "Belgium", ... ) },
   ...
   etc

Ключ будет похож на «CY», а значение - это страна, которая имеет некоторые свойства, среди которых FullName(«Кипр») и ShortName, например «CY» (также используется в качестве ключа)

ComboBox выглядит следующим образом:

<ComboBox
   x:Name="CountryCb"
   DisplayMemberPath="Value.ShortName"
   ItemsSource="{Binding Source={x:Static cf:Configuration.Instance}, Path=Countries}" 
   SelectedValuePath="Value"
   SelectedValue="{Binding SelectedCountry , Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"/> 

Свойство SelectedCountry имеет тип Country и должно быть установлено, выбравнекоторый элемент из выпадающего списка ComboBox.

Это хорошо работает: доступ к установщику SelectedCountry установлен и установлен.

Теперь проблемный: у меня есть другой статический словарь

public static Dictionary<int, CBListItem> SectionTypeList => new Dictionary<int, CBListItem>()
  {
      { 27, new CBListItem( "...", "...", "..." ) },
      ...
      etc

это список данных типа Section.

CBListItem имеет такие свойства, как FullName и ShortName, которые являются строками.

Я хочу использовать ключ словаря (int, 27), чтобы установитьСвойство Section SectionType через ComboBox:

<ComboBox
   x:Name="SectionsCb"
   DisplayMemberPath="Value.FullName"
   ItemsSource="{x:Static vm:MainViewModel.SectionTypeList}"
   SelectedValuePath="Key"
   SelectedValue="{Binding SectionType, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" />

Отображение работает хорошо (показывает FullName), но не параметр SectionType (int). Выбор другого параметра в раскрывающемся списке ComboBox не дает доступа к установщику SectionType (как показывает точка останова). По какой-то причине «ключ» не работает.

Вопрос: как мне заставить этот второй ComboBox работать так же, как первый?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...