我正在尝试执行以下操作。 我有一节课:
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。我在哪里可以将其设置为仅返回键/值对的键?
答案 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才被修复。
希望这会有所帮助......
克里斯