比方说,我有一个类,让我们将其命名为父。这个类拥有另一个类的一个对象,我们称之为Child。孩子有一个int属性ID。WPF:组合框,比较基于标识属性的对象
现在这些类的实例基于数据库表中的行。
因此,假设Parent有ID = 4的Child实例,并且在我的程序中会有一个包含所有可用Child实例的下拉列表,因此我们可以更改Parent中的实例。
问题在于,由于设计不好,带有所有子对象的列表在独立的场合从父级内的子实例进行实例化,因此即使它们都具有ID = 4,它也不会将它们识别为相同的对象(因为当然不是)。
但是,我仍然不想将相同的ID对象作为ComboBox的默认ID对象。我当然应该以某种方式参考ID,但是在12月的黑暗月份,我有点慢,我不知道该怎么做,因为它仍然是我设置的对象,不仅是int值。
这里是XAML代码:
<DataTemplate x:Key="EditTemplate" DataType="{x:Type data:Parent}">
<ComboBox ItemsSource="{Binding ElementName=Panel, Path=DataContext.ChildList}"
SelectedItem="{Binding Path=Child, Mode=TwoWay}"
SelectedValuePath="ID" DisplayMemberPath="Name" />
</DataTemplate>
嗯,当然应该工作。我一直在寻找XAML的解决方案,但是这当然可以工作,并且更加优雅。 – 2010-12-23 09:08:47