2011-01-25 41 views
1

我正在尝试执行以下操作。 我有一个类:SL3中的Combobox绑定字典<string,string>

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

在我看来,我创建了一个清单:在我的XAML

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; 
    } 

我有:

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

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

+1

我看不出有realted到任何文本字段的源代码,那么为什么你定义那个类? – 2011-01-25 17:42:00

+0

这只是我班的一部分,我将其定义为将我的视图的DataContext设置为此类,然后将它们添加到列表中。 – Masha 2011-01-25 18:08:51

回答

2

在您的标题您指定的Silverlight 3,不幸的是没有安东尼提到的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.

希望这有助于...

克里斯

3

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

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

感谢您的回复,但出现以下错误:错误属性'SelectedValue'在XML命名空间'http://schemas.microsoft.com/winfx'类型'ComboBox'中不存在/ 2006/XAML /演示”。 – Masha 2011-01-25 18:03:46

相关问题