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"
我能做什么?
不可能使用键值对实现您的行为。请看下面的例子。只需创建一个类有两个属性一个键和一个值。然后将这个类的集合绑定为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属性。
要理解其他两个,您应该首先理解SelectedItem
。SelectedItem
将从组合框中返回当前选择的Employee对象。你也可以给SelectedItem
分配一个Employee对象来设置组合框中的当前选择。
SelectedValuePath
指向Id,这意味着您可以通过使用SelectedValue
获得当前选定员工的Id。您还可以通过将SelectedValue
设置为Id(我们假设该Id将出现在Employees列表中)来设置ComboBox中当前选择的Employee。