Silverlight 组合框 selectedvalue 字符串属性绑定
Posted
技术标签:
【中文标题】Silverlight 组合框 selectedvalue 字符串属性绑定【英文标题】:Silverlight combobox selectedvalue string property binding 【发布时间】:2016-11-01 22:38:07 【问题描述】:我有一个包含以下项目的组合框:
[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"
我可以在这里做什么?
【问题讨论】:
我不明白你想在这里问什么。请澄清。 【参考方案1】:使用键值对无法实现您的行为。请参见下面的示例。 只需创建一个具有 2 个属性的类,一个用于键,一个用于值。然后将此类的集合绑定为 itemssource,并将 selectedvalue 绑定到字符串属性。即 Datas.Countries 是类的集合。
<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 属性,因此 ComboBox 中显示的值和下拉列表中包含的 Employee 条目将是 Employee 对象的 Name 属性。
要了解其他两个,首先要了解SelectedItem
。 SelectedItem
将从 ComboBox 返回当前选定的 Employee 对象。您还可以为 SelectedItem
分配一个 Employee 对象来设置 ComboBox 中的当前选择。
SelectedValuePath
指向 Id,这意味着您可以使用 SelectedValue
获取当前选择的 Employee 的 Id。您还可以通过将 SelectedValue
设置为 Id(我们假设它将出现在员工列表中)来设置组合框中当前选择的员工。
【讨论】:
以上是关于Silverlight 组合框 selectedvalue 字符串属性绑定的主要内容,如果未能解决你的问题,请参考以下文章
当组合框打开时,Silverlight Combobox 触发 KeyDown 事件
ms silverlight blend sketchflow - 组合框中的默认文本