2010-11-24 74 views
4

我有一个通用的基础页面类,我想用我的Silverlight页面。唯一的问题是x:TypeArguments属性似乎不起作用。Silverlight 4支持x:TypeArguments

该属性仅应用于XAML页面的根元素,无处可见。

我从编译器得到的错误消息是:"Using the generic type 'Base.BasePage<T>' requires 1 type arguments"。此错误始终指向生成的Page.g.i.cs文件。

这里是什么我的根元素看起来像一个例子:

<Base:BasePage x:TypeArguments="ViewModels:MyViewModel"> 

我已经很难找到在Silverlight 4的任何帮助,将不胜感激这是否支持良好的信息。谢谢!

回答

3

不幸的是,它尚未在Silverlight中受支持。如果你想在XAML中包含一个类,它不能是通用的。你仍然可以有一个通用的,并将它从代码添加到可视化树中,但不能直接在XAML中。

+1

感谢您的回复。 – user326502 2010-11-28 17:02:47

0

此变通方法仅适用于WPF应用程序。目前,Silverlight不支持派生控件的XAML根标记中所需的x:TypeArguments属性。

如果您必须具有从泛型基类派生的Silverlight控件,则必须执行一些额外的工作。基本上你需要有中间一个额外的类,这样的用户控件会从非通用类派生

基类:公共类GenericBase:用户控件

中产阶级:公共类MiddleStringControl:GenericBase

用户控件:公共类UserControlWithGenericBase:MiddleStringControl

你可能会看到这个网页

deriving-from-a-generic-base-class