我在 ListView 中显示两种类型的项目:
abstract class Item
{
string ID { get; }
}
class ItemTypeA : Item
{
string Value { get; set; }
}
class ItemTypeB : Item
{
string ValueOne { get; set; }
string ValueTwo { get; set; }
}
(当然,它们没有更多内容,它们使用各种接口,但为了举例,我把它省略了,只展示了这些类型的“最终”结构)
所以基本上在 ListView 中,总是有一个 ID 列,其他列取决于项目类型。
我正在考虑在of中使用某种动态列,底层视图模型将在其中确定应该显示哪些列(或给定项目类型的属性)。GridView
ListView.View
编辑也是如此——在编辑区域中, ItemTypeA应该只有一个TextBox
,ItemTypeB应该只有两个。
所以基本上,我的问题是,如何解决这个问题,同时尽量避免为每个项目类型制作完整的单独视图(带有 ListView 和编辑区域)。
另外,我想避免直接在 ListView 中编辑项目,因为项目值有时会包含大量文本(甚至是多行文本),这对于用户来说很难编辑。
(我正在使用 Caliburn.Micro,但这应该与问题不太相关)。