【发布时间】:2010-12-22 14:29:47
【问题描述】:
假设我有一个类,我们将其命名为 Parent。这个类具有另一个类的对象作为属性,我们称它为子类。 Child 有一个 int 属性 ID。
现在这些类的实例基于数据库表中的行。
假设 Parent 有 ID=4 的 Child 实例,在我的程序中会有一个包含所有可用 Child 实例的下拉列表,因此我们可以更改 Parent 中的实例。
问题是由于糟糕的设计,包含所有子对象的列表是在与父对象中的子对象分开的情况下实例化的,因此即使它们的 ID=4,它也不会将它们识别为同一个对象(因为当然不是)。
但是,我仍然不希望将相同的 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>
【问题讨论】:
-
我不认为这是一个糟糕的设计。在应用程序的生命周期中可以多次获取对象,并且它们将具有不同的地址。我认为这是在任何 UI 框架中开发应用程序时的常见问题。在 Vue 中有
v-bind:key