Как указать аргумент универсального типа в XAML - PullRequest
5 голосов
/ 27 сентября 2011

У меня есть BaseView для моего приложения MVP - PRISM WPF. Теперь по какой-то причине мы решили сделать _presenter как поле Templated в BaseView.

ранее у меня было представление представления xaml как

<base:BaseView xamlns:base="clr address of the dll which had BaseView" >

</base:BaseView>

Теперь, так как я изменил BaseView на BaseView<TPresenter>, Так как же тогда написать Xaml?

1 Ответ

8 голосов
/ 27 сентября 2011

Вы можете сделать это с .NET 4 Framework и XAML 2009. См. Обобщения в XAML на MSDN

Например:

<my:BusinessObject x:TypeArguments="x:String,x:Int32"/>

Для .NET 3.5:

Для использования XAML 2006, когда он специально нацелен на WPF, x: Class также должен быть предоставлены в том же элементе, что и x: TypeArguments, и этот элемент должен быть корневым элементом в документе XAML. Корневой элемент должен отображаться к универсальному типу по крайней мере с одним аргументом типа. Примером является PageFunction.

Возможные обходные пути для поддержки общего использования включают определение пользовательское расширение разметки, которое может возвращать универсальные типы, или предоставляя определение класса-обёртки, которое происходит от универсального типа, но выравнивает общее ограничение в своем собственном определении класса.

...