我想用XAML设置泛型变量的样式。
为此,我需要{x:Type myTypes:theType}
。
所以我有:
public class BaseClass
{
//
}
public class ClassA : BaseClass
{
//
}
public class ClassB : BaseClass
{
//
}
public class ListA : List<ClassA>
{
//
}
public class ListB : List<ClassB>
{
//
}
我是否有可能创建一个可以收集ListA或ListB的类?
我需要将它用于带有TargetType的DataTemplate,我想在没有TemplateSelector的情况下为ListA和ListB创建一个模板。
谢谢!
答案 0 :(得分:0)
不,但您可以将通用功能实现为接口。
在此示例中,我修改了您的ListA
和ListB
以公开通用界面。我承认我不太了解WPF,但这可以让你在ListA
或ListB
实例中使用常用方法。
public class BaseClass
{
public string BaseClassFoo { get; set; }
}
public class ClassA : BaseClass
{
public string ClassAFoo { get; set; }
}
public class ClassB : BaseClass
{
public string ClassBFoo { get; set; }
}
public interface IMyList {
void CommonOperation();
}
public class ListA : List<ClassA>, IMyList
{
public void CommonOperation() {
Console.WriteLine(this[0].ClassAFoo);
}
}
public class ListB : List<ClassB>, IMyList
{
//
public void CommonOperation() {
Console.WriteLine(this[0].ClassBFoo);
}
}
class Program {
private static void Main(string[] args) {
IMyList a = new ListA { new ClassA { ClassAFoo = "I'm an A" } };
IMyList b = new ListB { new ClassB { ClassBFoo = "I'm a B" } };
a.CommonOperation();
b.CommonOperation();
}
}
输出:
I'm an A
I'm a B
答案 1 :(得分:0)
List<int> listA = new List<int>() { 1, 2, 3 };
List<string> listB = new List<string>() { "A", "B", "C" };
ICollection ListC = listA;
ListC = listB;