【问题标题】:WPF Combobox behavior weirdWPF组合框行为奇怪
【发布时间】:2010-12-23 06:17:42
【问题描述】:

我有 2 个组合框,我们称之为 cbo1 和 cbo2。现在,cbo1 和 cbo2 之间存在关系。当我在 cbo1 选择一个项目时,cbo2 ItemsSource 无论如何都会更新(因为它已绑定到 SelectedItem),下面是它的示例 XAML 代码。

<ComboBox x:Name="cbo1" Grid.Row="0" Grid.Column="1" Margin="5" SelectedItem="{Binding Path=Brand}"></ComboBox>
<ComboBox x:Name="cbo2" Grid.Row="1" Grid.Column="1" Margin="5" SelectedItem="{Binding Path=Model}" ItemsSource="{Binding ElementName=cbo1, Path=SelectedItem.Models}" DisplayMemberPath="Name"></ComboBox>

使用的对象是品牌和型号。 Brand 有一个名为 Models 的属性,其中包含一组 Model 对象( typeof IList )。所以基本上,这两个类之间是一对多的关系。

顺便说一下,NHibernate 中使用了这两个类。现在,当我运行应用程序时,包含 Brand 对象集合的 cbo1 将首先加载项目。当我选择一个品牌项目时,带有模型集合的 cbo2 被填充。正如您所注意到的,两个组合框都有 SelectedItem 属性,具体绑定到当前对象属性 Brand 和 Model。当我在 cbo2 上选择一个模型时,它不会反映到当前对象的模型属性。我错过了什么?

【问题讨论】:

    标签: wpf data-binding binding combobox


    【解决方案1】:

    错字:第一个组合称为 cbo1,但第二个组合绑定到 cbxBrand;但是既然你说模型 do 出现了,我猜这在你的实际源代码中是可以的,你在这里为问题重命名了它?

    无论如何,您的代码完全适合我,我在 Model 属性的设置器上放了一个断点,它没有遇到任何问题,所以我唯一能猜到的是 Window 的 DataContext 可能不正确? 您可以发布您的代码隐藏(或 ViewModel)吗?

    【讨论】:

    • 哦,对不起,cbxBrand 实际上是 cbo1... 为这里的问题重命名。
    • cool.. 那么您是否仔细检查了 DataContext?重新迭代:您编写的代码是完全正确的,只要您绑定到(即已将 DataContext 设置为)公开属性“品牌”和“模型”的对象
    • 是的,我已经在包含两个组合框的父 Grid 元素中设置了 DataContext。我不知道为什么在 cbo2 元素中选择的模型项没有反映在 DataContext 的模型属性中。这就是让它变得奇怪的原因。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-12-25
    • 1970-01-01
    • 1970-01-01
    • 2015-10-12
    • 2015-01-14
    • 2014-11-26
    • 1970-01-01
    相关资源
    最近更新 更多