0

我想为资源字典中泛型类的不同子类指定相同的数据模板。实现这一目标的简单方法是什么?

class Base<T> {}

class DerivedInt : Base<int> {}

class DerivedDouble : Base<double> {}

<ResourceDictionary>
    <DataTemplate DataType="{x:Type local:DerivedInt}">
        <!--content goes here-->
    </DataTemplate>
    <DataTemplate DataType="{x:Type local:DerivedDouble}">
        <!--same content as above goes here-->
    </DataTemplate>
</ResourceDictionary>

所以我实际上想指定数据模板的相同内容而无需再次键入

4

1 回答 1

0

如果您想对所有类型使用相同的模板,我想您将使用转换为常见类型的属性值作为模板中的字符串或对象。

为那些具有要绑定到模板的属性的派生对象创建一个包装类。这些包装类需要一个数据模板

public class DerivedWrapper
{
   //Properties you want to bind

   public DerivedWrapper(DerivedInt dInt)
   {
      //Set the properties 
   }

   public DerivedWrapper(DerivedDouble dDouble)
   {
      //Set the properties
   }
}

接着

<ResourceDictionary>
    <DataTemplate DataType="{x:Type local:DerivedWrapper}">
        <!--content goes here-->
    </DataTemplate>
</ResourceDictionary>
于 2013-09-10T08:16:53.483 回答