DataTemplates and generic types

2019-02-25 17:07发布

问题:

I have a generic class

public abstract class BaseViewModel<T>

Since I am trying to create a DataTemplate that will be applied to all classes that derive from BaseViewModel, I set the type to BaseViewModel:

<DataTemplate DataType="{x:Type vm:BaseViewModel}">

However, this does not work since it looks like xaml does not support generic data types.

Are there any work arounds to this?

回答1:

I would create a non-generic version of BaseViewModel and let the generic one inherit from it:

public abstract class BaseViewModel
{
    // members that are not T-specific, if any
    // (not required, but could prove useful)
}

public abstract class BaseViewModel<T> : BaseViewModel
{
    // T-specific members
}

By doing this, your DataTemplate is going to work.