在您回答之前:这个问题是关于 WPF 的ListView控件(带有GridView)。它与 WPF 的控件、ASP.NET或控件或 WinForm或控件无关。它们听起来都非常相似并且经常被混淆,但是对于错误类型的控制的答案对我来说既没有帮助,更重要的是浪费了你写答案的时间,我认为不应该浪费。DataGridDataGridListViewDataGridViewListView
我有一个ListView控件,GridView它有几列绑定到我的视图模型的属性。GridViewColumn我可以通过指定一个CellTemplate(内联或通过资源)轻松自定义 的单元格的视觉外观。
现在我的视图模型上有一个特定的属性;它的类型是一个抽象基类,它的值可以是几个派生类型之一。每个派生类型在单元格中都应该有不同的类型DataTemplate。幸运的是,GridViewColumn它CellTemplateSelector完全符合我的要求,但需要编写一些管道代码。但是查看DataTemplateSelector它的页面说:
请注意,如果您有不同类型的对象,您可以在 DataTemplate 上设置 DataType 属性。如果您这样做,则无需创建 DataTemplateSelector。[...] 有关更多信息,请参阅数据模板概述。
欢呼!无需编写管道代码。我的类型不同,所以这看起来很合适。但是,唉,即使我DataTemplate用 a 定义了与DataType数据绑定列之一的特定派生类型匹配的 a (使用GridViewColumn's绑定DisplayMemberBinding),它也没有效果。
我只是想DataTemplate根据我的GridView. DataType-targeted是否DataTemplates与GridView? 有没有办法使用它们,或者我必须求助于指定一个CellTemplateSelector?也许有一种方法可以在'sDataTemplate内指定多个 s ,以便该属性产生效果?GridViewColumnCellTemplateDataType