我想要这样的东西
Class1 { DateTime time }
Class2 { List<Class1> }
Class3 : ObservableCollection<Class2> { }
但我实现了这个:
Class1 { DateTime time }
Class2 { List<DateTime> }
Class3 : ObservableCollection<Class2> { }
认为它可以节省更多内存。每个对象的时间属性都是唯一的。我知道这两种解决方案都是错误的,绑定这两个对象的正确方法是什么?我可以通过Class3访问Class1的属性吗?
编辑:以上不是实际代码,只是为了解释我的问题。这些类具有其他属性,Class1和Class2也在其他地方使用答案 0 :(得分:2)
在您的第二个解决方案中,无法使用您向我们展示的内容访问来自Class1
的{{1}}的任何实例 - 您可以加载Class3
和{{ 1}}实例,但从不创建Class3
的实例。
如果您的第一个解决方案代表您逻辑想要的内容,为什么不使用它呢?
另一方面,如果您的Class2
代码除了Class1
之外没有任何状态,您是否还需要它存在?
答案 1 :(得分:1)
首先,你想解决什么问题?节省内存不是我在这里看到的问题。是否有数百万个这样的对象被迫创建这个对象?
如果没有,请考虑最可读/可维护的解决方案。否则请随意分享您的问题,以便将它放在我们的上下文中。所以我们可以仔细看看并提供更好的答案。
答案 2 :(得分:0)
如果您在其他地方使用Class1
,意味着对象已经存在,那么在List中使用它们将不需要大量内存。它只存储指向对象的指针(4/8字节)而不是它的副本。事实上,使用DateTime
列表可能需要更多内存。
所以记忆不应该像其他人指出的那样是一个问题。
关于Binding的可见性。如果您为对象包含一个publicy可访问属性,您将能够看到它。
如果你的Class1
对象集合可以改变,你也应该考虑实现ObservableCollection
,告诉WPF集合何时发生变化。