将字典<string,string>绑定到SL3中的Combobox </string,string>

时间:2011-01-25 17:36:41

标签: silverlight binding combobox silverlight-3.0 selecteditem

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

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。我在哪里可以将其设置为仅返回键/值对的键?

2 个答案:

答案 0 :(得分:3)

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

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

答案 1 :(得分:2)

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

希望这会有所帮助......

克里斯