【问题标题】:Binding Dictionary<string,string> to Combobox in SL3在 SL3 中将 Dictionary<string,string> 绑定到 Combobox
【发布时间】:2011-06-15 09:02:27
【问题描述】:

我正在尝试执行以下操作。 我有一堂课:

public class TextField {
    public string TextType { get; set; }
}

在我的视图中,我创建了一个列表:

public TextFieldEditControl()
    {
        InitializeComponent();

        Dictionary<string, string> lst = new Dictionary<string, string>();
        lst.Add("SingleLine", "Single line");
        lst.Add("MultiLine", "Multi-line");
        lst.Add("RichText", "Rich text");
        cmbTextType.ItemsSource = lst;
    }

在我的 XAML 中我有:

<ComboBox x:Name="cmbTextType" DisplayMemberPath="Value" SelectionChanged="cmbTextType_SelectionChanged" 
            SelectedItem="{Binding Path=TextType, Mode=TwoWay}" />

问题是,当我检查 TextType 属性的值时,它会返回一个类似这样的字符串:“[SingleLine, Single line]”,而不仅仅是 Key。我在哪里可以将其设置为仅返回键/值对的键?

【问题讨论】:

  • 我看不到任何与TextField相关的源代码,那你为什么要定义那个类?
  • 这只是我类的一部分,我定义它以将我的视图的 DataContext 设置为此类,然后将它们添加到列表中。

标签: silverlight binding combobox silverlight-3.0 selecteditem


【解决方案1】:

绑定到SelectedValue 属性而不是SelectedItem 并指定SelectedValuePath="Key"

<ComboBox x:Name="cmbTextType" SelectedValuePath="Key" DisplayMemberPath="Value"
   SelectionChanged="cmbTextType_SelectionChanged"
   SelectedValue="{Binding Path=TextType, Mode=TwoWay}" /> 

【讨论】:

  • 感谢您的回复,但我收到以下错误:错误 1 ​​XML 命名空间 'schemas.microsoft.com/winfx/2006/xaml/presentation' 中的类型 'ComboBox' 上不存在属性 'SelectedValue'。
  • @Masha:抱歉错过了你标题中的 SL3,正如 Chris 指出的那样,这些是在 SL4 中添加的。
  • 很高兴知道未来(当我的公司最终决定升级时:)。非常感谢,安东尼!
【解决方案2】:

在您的标题中,您指定了 Silverlight 3,遗憾的是它没有 Anthony 提到的 SelectedValue 和 SelectedValuePath 属性。这意味着您需要做一个令人讨厌的解决方法才能使其正常工作。我在我的这篇 Silverlight 2 时代的文章中讨论了它,在标题为“组合框噩梦”的部分中:http://www.silverlightshow.net/items/Building-a-Silverlight-Line-Of-Business-Application-Part-5.aspx。这在 Silverlight 2 中很痛苦,直到 Silverlight 4 才修复。

希望这会有所帮助...

克里斯

【讨论】:

  • 谢谢,克里斯!这正是我正在寻找的,但我在该页面上找不到值转换器的源代码。我有一个关于如何将 KeyValuePair 转换为 Key 的想法,但我不确定如何将它从一个字符串值转换回来。你能解释一下吗?
  • 嗨,玛莎。有一个链接可以下载包含页面上所有代码的示例应用程序(靠近顶部)。或者直接点击这里:silverlightshow.net/Storage/Sources/AdventureWorksLOB_Part5.zip :)。
  • 哦,我找到了。对不起。是的,我想我会采用这个解决方案,尽管它的工作量比其他方式要多.. 再次感谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-08-04
  • 1970-01-01
  • 1970-01-01
  • 2011-11-11
  • 2011-07-27
相关资源
最近更新 更多