2

我是Windows Phone开发的新手,如果我的问题很愚蠢,请原谅。

我开发了一个简单的泛型类,旨在成为我的 WP7 应用程序中所有页面的基类。它是这样的:

namespace Subway.Rails
{
    public class Screen<TModel> : PhoneApplicationPage where TModel: class, new()
    {
        private static readonly DependencyProperty ModelProperty = DependencyProperty.Register("Model", typeof(TModel),
                                                                                               typeof (Screen<TModel>),
                                                                                               new PropertyMetadata(new TModel()));

        public TModel Model
        {
            get { return GetValue(ModelProperty) as TModel; }
            set { SetValue(ModelProperty, value); }
        }
    }
}

但是,当我尝试使用x:TypeArguments指令在 XAML 中声明页面时

<rails:Screen x:TypeArguments="models:NotesStorage" xmlns:rails="clr-namespace:Subway.Rails;assembly=Subway.Rails" ...

并将 *.xaml.cs 文件中的基本类型加倍

public partial class HomeView : Screen<NotesStorage>

我收到运行时错误

Error   7   Using the generic type 'Subway.Rails.Screen<TModel>' requires 1 type arguments  D:\development\labs\mobilelab\Subway.Notes\Subway.Notes\obj\Debug\Views\HomeView.g.cs   37  50  Subway.Notes

在生成的文件中。

有没有办法在 XAML 中实例化通用页面?

4

1 回答 1

1

虽然我找不到任何正式的说明(总是很难找到关于不受支持的功能的文档):当Silverlight 不支持它时,它在 Windows Phone 上不可用。

您看到的错误消息似乎证实了这一点。

于 2012-08-28T06:57:09.743 回答