【问题标题】:Need to tie a key to a value in a list C#需要将键绑定到列表 C# 中的值
【发布时间】:2012-04-12 13:15:43
【问题描述】:

更新:只需要从字典中返回一个键,字典是由 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);
}

【问题讨论】:

标签: c# wcf


【解决方案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 在整个字典上。有关详细信息,请参阅此链接,
Two Way Data Binding With a Dictionary in WPF

【讨论】:

  • 感谢您的回答和建议,但这似乎不起作用,我在该方法中使用字典,因为它在 Web 服务中处理
  • 你说的话真的没有意义 :) 你需要缩小规模并给我们一个具体的例子,尽可能小
  • 我更新了我的问题,希望现在更有意义,谢谢
  • 返回“一把钥匙”?您是否需要 Divisions.Keys - 或查询 - 或者您不知道如何包装 Web 服务?
  • 我需要与所选项目匹配的除法字典中的键
猜你喜欢
  • 2012-04-07
  • 1970-01-01
  • 1970-01-01
  • 2011-10-29
  • 1970-01-01
  • 1970-01-01
  • 2013-08-19
  • 1970-01-01
  • 2011-05-15
相关资源
最近更新 更多