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 属性对象。
要理解其他两个,首先要理解SelectedItem
。 SelectedItem
将 return 当前从 ComboBox 中选择的 Employee 对象。您还可以为 SelectedItem
分配一个 Employee 对象以设置 ComboBox 中的当前选择。
SelectedValuePath
指向Id,也就是说可以通过SelectedValue
获取当前选中的Employee的Id。您还可以通过将 SelectedValue
设置为一个 Id(我们假设它会出现在 Employees 列表中)来设置 ComboBox 中当前选定的 Employee。
我有一个组合框,其中包含如下项目:
{[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 属性对象。
要理解其他两个,首先要理解SelectedItem
。 SelectedItem
将 return 当前从 ComboBox 中选择的 Employee 对象。您还可以为 SelectedItem
分配一个 Employee 对象以设置 ComboBox 中的当前选择。
SelectedValuePath
指向Id,也就是说可以通过SelectedValue
获取当前选中的Employee的Id。您还可以通过将 SelectedValue
设置为一个 Id(我们假设它会出现在 Employees 列表中)来设置 ComboBox 中当前选定的 Employee。