在您回答之前:这个问题是关于 WPF 的ListView
控件(带有GridView
)。它与 WPF 的控件、ASP.NET或控件或 WinForm或控件无关。它们听起来都非常相似并且经常被混淆,但是对于错误类型的控制的答案对我来说既没有帮助,更重要的是浪费了你写答案的时间,我认为不应该浪费。DataGrid
DataGrid
ListView
DataGridView
ListView
我有一个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 ,以便该属性产生效果?GridViewColumn
CellTemplate
DataType