基于具有一个类似T
的类似
public abstract class BaseClass<T> {
pulic string Name;
public T Value { get; set; }
// ...
}
以及一些实现此基类的具体类
public class IntClass<int> : BaseClass<int> {
// ...
}
或
public class StringClass<string> : BaseClass<string> {
// ...
}
我创建了一个WPF DataGrid
,其中包含两个列,显示第一列中的Name
属性和第二列中的Value
属性。 Name
属性是只读的,但显示Value
属性的单元格是可编辑的。为此,我为单元格中DataTemplate
属性的显示和编辑创建了不同的Value
。由于我想在一个IntClass
中显示各种不同的子类(例如StringClass
,DataGrid
,...),因此每个子类都有适当的DataTemplate
是通过DataTemplateSelector
选择的,用于识别类似
aClassObject.GetType() == typeof(IntClass)
// ...
并选择/返回我存储在另一个DataTemplate
中的ResourceDictionary
。
这种方法很好,但是,我正在寻找一个更通用的解决方案,它选择DataTemplate
来显示和编辑一个单元格,只在具体类的泛型类型T
上。我该怎么做呢?我想放弃DataTemplateSelector
。这不是通过为所有可用的泛型类型提供不同的DataTemplate
并且仅基于抽象基类属性来工作,例如“我知道子类继承了一个名为Value的属性并且基于具体的泛型子类的类型我正在显示标签,文本框,日期选择器......而不知道子类实际上是什么“?
注意:在上面提供的示例中,类型可能会变得更复杂,但是,总是结构化(加上,我知道字符串实际上不是结构)。