2011-11-22 68 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

相關問題