Шаблоны данных и универсальные типы - PullRequest
2 голосов
/ 05 июля 2011

У меня есть родовой класс

public abstract class BaseViewModel<T>

Поскольку я пытаюсь создать DataTemplate, который будет применяться ко всем классам, производным от BaseViewModel, я установил тип в BaseViewModel:

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

Однако это не работает, так как похоже, что xaml не поддерживает универсальные типы данных.

Есть ли обходные пути к этому?

1 Ответ

8 голосов
/ 05 июля 2011

Я бы создал неуниверсальную версию 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
}

Таким образом ваш DataTemplate заработает.

...