用户控件中的DataGrid引发异常无法转换类型为“ MS.Internal.NamedObject”的对象

时间:2018-09-21 10:59:09

标签: c# wpf user-controls

我有一个包含DataGrid的项目,该项目已实现了方便的排序和筛选UI。实际上,它非常方便,我已经将相关代码提取到了嵌入在测试项目中的UserControl中。我为DataGrid控件添加了DependencyProperties,希望对UserControl的使用者可用。到目前为止一切顺利。

当我设置DataGrid属性IsReadOnly =“ False”时,问题开始了。届时,对其ItemsSource进行的任何操作都会引发异常。

原始项目中的DataGrid对IsReadOnly =“ False”非常满意,而UserControl对IsReadOnly =“ True”则正常。在调试器(VS 2017)中,所有内容均已正确键入且所有数据均符合预期。

下面的代码发生一次故障

this.Xrefs.Cast<ProductXref>().ToList()

其中

public ICollectionView Xrefs { get; set; }

是从我的ItemsSource DependencyProperty中设置的。

在其他位置,我遇到Object does not match target type异常。 VS是否将ItemsSource集合包装为另一个对象,但是仅当DataGrid位于UserControl中且设置为非只读时?

我很高兴可以将DataGrid保留为只读状态,并使用子窗体来编辑行,但是我更喜欢在可能的地方进行编辑。

1 个答案:

答案 0 :(得分:1)

您可以使用cd cloud/modules/node_modules/pusher方法仅获取OfType<T>对象,而不是在集合视图中投射所有项目:

ProductXref

在集合视图中可能还有其他类型的对象,例如,您通常会在this.Xrefs.OfType<ProductXref>().ToList(); 中看到的最后一个“空”行的占位符。