WPF Caliburn.Micro DataGrid列

时间:2012-12-17 13:22:33

标签: wpf datagrid caliburn.micro

我有一个WPF Caliburn.Micro应用程序,其中包含一个带有DataGrid的选项卡控件。 DataGrid中的列是以编程方式设置的。我可能需要关闭一个标签,然后再打开它。我得到一个例外,说DataGrid中已经存在一个列,但实际上根本没有列。你能帮帮我吗?

在图片上,您可以在Watch窗口中看到myGrid.Columns.Count等于0

Here you can see in the Watch window that myGrid.Columns.Count equals 0

1 个答案:

答案 0 :(得分:1)

看起来您可能正在将已存在的列(在先前的数据网格中)添加到另一个数据网格中。该错误表示该列存在于 a 数据网格的Columns集合中,而不是您尝试将其添加到

的集合中。

DataGrid无法共享列 - 您需要从之前的数据网格中删除该列。这可能意味着你在某处也有内存泄漏。如果您的标签项VM继承Screen,您可能希望覆盖OnDeactivate并清除列

或者,您可以通过列获取对父网格的引用,并将其从父网格中删除,尽管我自己没有使用标准的.NET DataGrid(只使用了Teleriks),所以我不能确定 - 不过个人而言,关闭时的清晰似乎更清晰。

一个新的类实例不应该在一个死的实例之后清理它的责任,它应该是班级自己清理的责任(我一直告诉我的孩子这个!)