DataTemplates和泛型类型

Fla*_*ack 2 c# datatemplate mvvm

我有一个通用类

public abstract class BaseViewModel<T>
Run Code Online (Sandbox Code Playgroud)

因为我正在尝试创建一个将应用于从BaseViewModel派生的所有类的DataTemplate,所以我将类型设置为BaseViewModel:

<DataTemplate DataType="{x:Type vm:BaseViewModel}">
Run Code Online (Sandbox Code Playgroud)

但是,这不起作用,因为它看起来像xaml不支持通用数据类型.

这有什么工作吗?

svi*_*ick 9

我会创建一个非泛型版本,BaseViewModel让通用版本继承它:

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
}
Run Code Online (Sandbox Code Playgroud)

通过这样做,你DataTemplate将会工作.