如何在组合框而不是值中使用字典键

时间:2019-11-02 11:56:06

标签: c# dictionary combobox

我有一个静态字典,用作组合框的ItemsSource:

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

密钥类似于“ CY”,并且值是一个具有某些属性的国家/地区,其中包括全名(“塞浦路斯”) 以及诸如“ CY”(也用作键)之类的ShortName

组合框如下:

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

显示效果很好(显示全名),但是SectionType(int)的设置却不好。 在ComboBox下拉菜单中选择另一个选项将无法访问 SectionType setter(如断点所示)。 由于某些原因,“密钥”不起作用。

问题:如何使第二个ComboBox像第一个一样工作?

0 个答案:

没有答案