0

更新:只需要从字典中返回一个键,字典是由 Web 服务创建的,然后传递回我的 WPF 程序,然后将字典填充到包含以下值的下拉列表中

IT_ED
IT_FS
IT_BUS

按键分配如下

Key Value
[1] IT_ED
[2] IT_FS
[3] IT_BUS

我需要值中的键,基于在下拉菜单中选择的项目

我用来存放钥匙的字典

private Dictionary<int, string> _DivisionDict = new Dictionary<int, string>();

private Dictionary<int, string> DivisionDict
{
    get { return _DivisionDict; }
    set { _DivisionDict = value; }
}

下面是我如何使用键填充下拉菜单和字典

foreach (var D in Divisions)
{
   txtY.Items.Add(D.Value);
   DivisionDict.Add(D.Key, D.Value);
}
4

1 回答 1

1

好的,现在好多了(问题),
所以,如果我做对了,你想从 WPF 下拉列表中的选定项目(即 ComboBox)中取回一个“索引”。

首先,最简单的方法是通过您的视图模型进行适当的数据“绑定”,

ItemsSource="{Binding YourDictionaryProperty}" 
SelectedItem="{Binding Path=YourDictionarySelectedItem, Mode=TwoWay, NotifyOnSourceUpdated=True, UpdateSourceTrigger=PropertyChanged}"  
DisplayMemberPath="Value"
  • 通过 View Model 类公开您的字典。就像您创建的财产一样,
  • 将视图模型作为组合框(或父级等)的数据上下文,
  • 用于绑定 (YourDictionarySelectedItemYourDictionaryProperty) 的两个属性都是视图模型中的属性。一个是“按原样”公开字典,另一个是 KeyValuePair ...SelectedItem。仅供参考,
  • 做类似上面的事情......

...然后在您YourDicitonarySelecteItem的视图模型中-您将拥有字典中的 KeyValuePair 。从那里你知道索引和价值。

或者是brute force通过例如像这样的LINQ在字典中找到所选值(如果您根据当前设置的方式将其作为“输出”)...

Divisions.Where(d=>d.Value == "selected value").FirstOrDefault();  

...这会给你“对”,然后从那里得到Key.

希望这次我们成功了:),干杯

编辑:正确的字典绑定不在原始范围内,因此它是一个快速修复解决方案。如果您需要“从后面”更新字典,则需要使用一些可观察的集合 - 或在其项目更改时强制 OnPropertyChanged 在整个字典上。有关更多具体信息,请参见此链接,
WPF 中使用字典的双向数据绑定

于 2012-04-12T13:57:40.867 回答