2011-11-22 71 views
1

我看了一下Another Question,但是我得到的错误更具体。Blend无法显示Visual Studio 2010可以显示的设计时间数据

此示例数据使用视图模型,该视图模型没有默认的无参数构造函数,但它具有公共参数化的构造函数。

我相信设计时间数据使用反射,应该能够处理这个(因为它实际上并没有实例化类)。因此它让我很困惑,为什么在设计时出现以下错误:

“AccessDeniedViewModel”类型不包含任何可访问的构造函数。

我的XAML中包含设计时间数据的行是d:DataContext="{d:DesignData /SampleData/AccessDeniedViewModelSampleData.xaml}"。我使用了Blend的'从类创建示例数据...'来生成这个数据文件。

但是,当我在Visual Studio 2010中打开此视图时,它完全能够将其与设计时间数据一起显示。

我真的不想仅仅在设计时使用无参数的构造函数,任何获得Blend中设计数据的方法都将非常感谢。

编辑:我还应该提到,绑定支持仍然存在,当我添加绑定到视图时,可用的属性被列出,就像它解析到正确的类型,只是无法实例化它。

回答

2

您将需要提供默认的构造函数。这是为什么:Why XML-Serializable class need a parameterless constructor

我能想到的唯一的其他选择是在视图的构造函数中编写逻辑,该函数在设计时加载xaml,以便您可以调用构造函数的参数化版本。

+0

http://www.vladhorby.com/wpblog/2010/05/14/designdata-support-for-silverlight-in-visual-studio-2010-and-blend-4/提供了一个示例,其中无参数构造函数不需要。我看不出为什么Visual Studio能够管理它,但不能混合。感谢您的建议:) – Lukazoid

+0

那么你测试了吗?它没有无参数构造函数吗?你所指的页面和你的代码有什么区别? –

+0

我已将该示例中的步骤应用于我的情况,它在Visual Studio中工作,但不在Blend中。 Blend抱怨缺乏一个可访问的构造函数。我能看到的唯一区别是我的视图模型是派生类。 – Lukazoid

相关问题