C#/ WPF:将ComboBox绑定到两个元素?

时间:2009-09-28 14:41:02

标签: c# wpf data-binding combobox

我关注对象

public int PersonAge { get; set; }
public List<PersonGroup> PersonList { get; set; }

public class PersonGroup()
{
    public string Name { get; set; }
    public string DefaultAge { get; set; }
}

我的ComboBox绑定到PersonList,而我还有一个绑定到PersonAge的TextBox。 如果用户在TextBox(PersonAge)中输入数字'20',我想在ComboBox中选择相应的PersonGroup,如果用户从ComboBox中选择PersonGroup-Item“Test1”,我希望TextBox显示10在TextBox中(因为PersonList [1]将是例如Name =“Test1”; DefaultAge = 10;)

如何通过DataBinding解决这个问题?

非常感谢。

干杯, 约瑟夫

2 个答案:

答案 0 :(得分:1)

在我的脑海中,您可以尝试在ComboBox上使用SelectedValue和SelectedValuePath属性:

<ComboBox x:Name="ComboBox" SelectedValuePath="DefaultAge" SelectedValue="{Binding PersonAge}"/>
<TextBox Text="{Binding ElementName=ComboBox, Path=SelectedValue}"/>

edit1:我认为文本框可以绑定到PersonAge,使代码更清晰......不确定,不幸的是我暂时无法测试它。

答案 1 :(得分:1)

您可以公开ListCollectionView,而不是原始列表。设置Filter功能。更新了PersonAge后,您可以从视图中调用Refresh()方法。至于另一部分 - 您始终可以绑定到集合视图中的当前项。例如:

<TextBox Text="{Binding PersonList/DefaultAge}"/>

希望这有帮助。