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

本文关键字:属性 绑定 字符串 selectedvalue 组合 Silverlight | 更新日期: 2023-09-27 17:53:25

我有一个包含如下项目的组合框:

{[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"

我能做什么?

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

不可能使用键值对实现您的行为。请看下面的例子。只需创建一个类有两个属性一个键和一个值。然后将这个类的集合绑定为itemssource,并将选中的值绑定到字符串属性。即数据。国家是类的集合。

<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之间的区别。

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

和以下的xaml:

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

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

要理解其他两个,您应该首先理解SelectedItemSelectedItem将从组合框中返回当前选择的Employee对象。你也可以给SelectedItem分配一个Employee对象来设置组合框中的当前选择。

SelectedValuePath指向Id,这意味着您可以通过使用SelectedValue获得当前选定员工的Id。您还可以通过将SelectedValue设置为Id(我们假设该Id将出现在Employees列表中)来设置ComboBox中当前选择的Employee。