【问题标题】:WPF C# DataBinding List FinalizationWPF C# DataBinding 列表完成
【发布时间】:2013-03-09 19:31:28
【问题描述】:

我已经实现了一个用户控件,其中包含一个绑定到列表的 ListBox:

listBox1.ItemsSource = list;

我已经实现了一个删除(唯一)对列表的引用的方法:

listBox1.ItemsSource = null;

调用此方法后,我强制进行垃圾回收:

GC.Collect();

我的列表类的析构函数没有被调用。显然有一些对列表的隐藏引用。

我们将不胜感激地收到任何对此行为的解释。

【问题讨论】:

  • 你试过Gc.Colect(); Gc.WaitFor(); Gc.Collect();吗?
  • 是要删除 ItemSource 对列表的引用,还是要 ListBox 为空?
  • 我要删除引用
  • 在将 ItemsSource 设置为 null 后,您是否看到 listBox1 中的变化?
  • WPF 可能会保留一些引用,但为了获得更好的图片,您必须发布更完整的代码。什么是列表,在= null 之后多久调用Collect()

标签: c# wpf data-binding listbox


【解决方案1】:

list 不为空,所以它仍然存在。

list = null;

【讨论】:

  • list 作为参数传递,在分配给 ItemsSource 后不再在范围内
  • @user2187743 - 但是阅读这个问题的人并不知道。
【解决方案2】:

解决方案是从 ObservableCollection(或实现 INotifyCollectionChanged 的​​东西)而不是 List 派生列表类。

【讨论】:

  • 这在问题的上下文中没有多大意义。
猜你喜欢
  • 1970-01-01
  • 2018-08-04
  • 2012-04-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-12-06
相关资源
最近更新 更多