Silverlight 组合框 selectedvalue 字符串 属性 绑定

Silverlight combobox selectedvalue string property binding

我有一个组合框,其中包含如下项目:

{[1, US]}
{[2, UK]}

我的组合框将用 Value 显示它。我的问题是我无法设置组合框的 SelectedValue 属性。

<ComboBox Name="cbSource" Grid.Row="1" Grid.Column="3"
ItemsSource="{Binding Datas.Countries, Mode=OneWay}" 
SelectedValue="{Binding CurrentObject.Country, Mode=TwoWay}"     
DisplayMemberPath="Value" SelectedValuePath="Key"></ComboBox>

现在我的 CurrentObject.Country 是一个字符串 属性,值为 UK。我也在下面尝试了这个,但没有成功。

DisplayMemberPath="Value" SelectedValuePath="Value"

我可以在这里做什么?

无法使用键值对实现您的行为。请参见下面的示例。 只需创建一个具有 2 个属性的 class,一个用于键,一个用于值。然后将这个 class 的集合绑定为 itemssource 并将 selectedvalue 绑定到字符串 属性。即Datas.Countries是class.

的集合
<ComboBox Name="cbSource" Grid.Row="1" Grid.Column="3"
ItemsSource="{Binding Datas.Countries, Mode=OneWay}" 
SelectedValue="{Binding SomePropertyToHoldKeyValue, Mode=TwoWay}"     
DisplayMemberPath="Value" SelectedValuePath="Key"></ComboBox>

我想我们可以通过一个例子更好地理解SelectedItem、SelectedValue、DisplayMemberPath 和SelectedValuePath 之间的区别。看到这个 class:

public class Employee
{
   public int Id;
   public string Name;
}

和以下 xaml:

<ComboBox ItemsSource="{Binding Source={StaticResource Employees}}"
          DisplayMemberPath="Name"
          SelectedValuePath="Id"/>

DisplayMemberPath 指向 Name 属性,因此 ComboBox 中显示的值和下拉列表中包含的 Employee 条目将是 Employee 的 Name 属性对象。

要理解其他两个,首先要理解SelectedItemSelectedItem 将 return 当前从 ComboBox 中选择的 Employee 对象。您还可以为 SelectedItem 分配一个 Employee 对象以设置 ComboBox 中的当前选择。

SelectedValuePath指向Id,也就是说可以通过SelectedValue获取当前选中的Employee的Id。您还可以通过将 SelectedValue 设置为一个 Id(我们假设它会出现在 Employees 列表中)来设置 ComboBox 中当前选定的 Employee。