2011-09-27 113 views
2

我有一个适用于我的MVP - PRISM WPF应用程序的BaseView。现在由于某种原因,我们认为_presenter是BaseView中的模板字段。如何在XAML中指定泛型类型参数

前,我才认为XAML表示作为

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

</base:BaseView> 

,因为现在我已经改变了BaseViewBaseView<TPresenter>,所以我应如何写XAML中呢?

回答

5

你可以做到这一点,因为.NET 4 Framework和XAML 2009年 见Generics in XAML MSDN上

例如:

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

对于.NET 3.5:

对于2006年XAML用法的时候,特意定位WPF,x:Class还必须在与x:TypeArguments相同的元素上提供 ,并且该元素 必须是XAML文档中的根元素。根元素必须将 映射为具有至少一个类型参数的泛型类型。一个例子是PageFunction。

可能的解决方法,以支持通用的用法包括定义 自定义标记扩展,可以返回泛型类型,或提供 包装类的定义,从一个泛型类型派生,但 变平在自己的类定义通用约束。

+0

你能告诉我它将如何看待我的场景,我想要指定视图的根节点的TemplateArgument。 – ioWint

+0

我发现了这篇文章,http://blogs.msdn.com/b/wpfsldesigner/archive/2010/01/22/known-issue-controls-deriving-from-a-generic-base-class-must- be-in-separate-assembly.aspx描述了一个存在的问题。我能够标记TypeArgument以使其工作。感谢Sll! – ioWint

+0

@ioWint:非常有趣的一点! – sll