gpt4 book ai didi

WPF:ComboBox,根据识别属性比较对象

转载 作者:行者123 更新时间:2023-12-04 19:37:54 31 4
gpt4 key购买 nike

假设我有一个类(class),让我们将其命名为 Parent。这个类具有另一个类的对象作为属性,我们称之为子类。 child 有一个 int 属性 ID。

现在这些类的实例基于数据库表中的行。

因此,假设 Parent 有 ID=4 的 Child 实例,在我的程序中会有一个包含所有可用 Child 实例的下拉列表,因此我们可以更改 Parent 中的实例。

问题是,由于设计不当,所有子对象的列表都是在与父对象内部的 Child 不同的场合实例化的,因此即使它们的 ID=4,它也不会将它们识别为同一个对象(因为它当然不是't)。

但是,我仍然不想将相同的 ID 对象作为 ComboBox 的默认对象。我当然应该以某种方式以某种方式引用 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>

最佳答案

so even if they both have ID=4 it won't recognize them as same object ( because of course it isn't )



听起来根本问题是平等,覆盖给定子对象的必要方法以达到适合您需求的平等定义。
public override bool Equals(object obj)
{
Child other = obj as Child;
if( other == null )
{
return false;
}

return (this.Id == other.Id);
}

public override int GetHashCode()
{
return this.Id.GetHashCode();
}

public static bool operator == (Child me, Child other)
{
return Equals(me, other);
}

public static bool operator != (Child me, Child other)
{
return Equals( me, other );
}

关于WPF:ComboBox,根据识别属性比较对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4510179/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com