如何在C#中正确绑定两个类

时间:2011-05-10 08:50:08

标签: c# data-binding

我想要这样的东西

Class1 { DateTime time }
Class2 { List<Class1> }
Class3 : ObservableCollection<Class2> { }

但我实现了这个:

Class1 { DateTime time }
Class2 { List<DateTime> }
Class3 : ObservableCollection<Class2> { }

认为它可以节省更多内存。每个对象的时间属性都是唯一的。我知道这两种解决方案都是错误的,绑定这两个对象的正确方法是什么?我可以通过Class3访问Class1的属性吗?

编辑:以上不是实际代码,只是为了解释我的问题。这些类具有其他属性,Class1和Class2也在其他地方使用

3 个答案:

答案 0 :(得分:2)

在您的第二个解决方案中,无法使用您向我们展示的内容访问来自Class1的{​​{1}}的任何实例 - 您可以加载Class3和{{ 1}}实例,但从不创建Class3的实例。

如果您的第一个解决方案代表您逻辑想要的内容,为什么不使用它呢?

另一方面,如果您的Class2代码除了Class1之外没有任何状态,您是否还需要它存在?

答案 1 :(得分:1)

首先,你想解决什么问题?节省内存不是我在这里看到的问题。是否有数百万个这样的对象被迫创建这个对象?

如果没有,请考虑最可读/可维护的解决方案。否则请随意分享您的问题,以便将它放在我们的上下文中。所以我们可以仔细看看并提供更好的答案。

答案 2 :(得分:0)

如果您在其他地方使用Class1,意味着对象已经存在,那么在List中使用它们将不需要大量内存。它只存储指向对象的指针(4/8字节)而不是它的副本。事实上,使用DateTime列表可能需要更多内存。

所以记忆不应该像其他人指出的那样是一个问题。

关于Binding的可见性。如果您为对象包含一个publicy可访问属性,您将能够看到它。

如果你的Class1对象集合可以改变,你也应该考虑实现ObservableCollection,告诉WPF集合何时发生变化。