我有一个包含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保留为只读状态,并使用子窗体来编辑行,但是我更喜欢在可能的地方进行编辑。
答案 0 :(得分:1)
您可以使用cd cloud/modules/node_modules/pusher
方法仅获取OfType<T>
对象,而不是在集合视图中投射所有项目:
ProductXref
在集合视图中可能还有其他类型的对象,例如,您通常会在this.Xrefs.OfType<ProductXref>().ToList();
中看到的最后一个“空”行的占位符。