【问题标题】:C#/WPF: Bind ComboBox to two Elements?C#/WPF:将 ComboBox 绑定到两个元素?
【发布时间】:2009-09-28 14:41:01
【问题描述】:

我关注对象

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 解决这个问题?

非常感谢。

干杯, 约瑟夫

【问题讨论】:

    标签: c# wpf data-binding combobox


    【解决方案1】:

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

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

    edit1:我认为文本框可以绑定到 PersonAge,从而使代码更清晰 imo....不确定,不幸的是我目前无法对其进行测试。

    【讨论】:

    • 关于edit1:是的,效果更好,代码更少:-) 干杯
    【解决方案2】:

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

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

    希望这会有所帮助。

    【讨论】:

    • 感谢 ListCollectionView 的提示。 Bubblewrap 的解决方案在当前解决方案中更容易实现,但我相信你的解决方案会对我接下来的任务有很大帮助:-) 干杯
    猜你喜欢
    • 2010-12-02
    • 2013-10-21
    • 1970-01-01
    • 1970-01-01
    • 2019-08-15
    • 1970-01-01
    • 2023-04-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多