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 属性。

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

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

【讨论】:

以上是关于Silverlight 组合框 selectedvalue 字符串属性绑定的主要内容,如果未能解决你的问题,请参考以下文章

Silverlight组合框键盘选择

当组合框打开时,Silverlight Combobox 触发 KeyDown 事件

ms silverlight blend sketchflow - 组合框中的默认文本

Silverlight Combobox 将所选项目设置为 datagrid 的所选项目

如何以编程方式将垂直滚动条添加到组合框

如何使 Silverlight 自定义控件的属性数据可绑定?