2012-12-27 103 views
2

我剛開始使用WCF服務做了第一步,並組成了一個小WPF應用程序,該應用程序顯示從WCF服務中檢索到的數據。我將應用程序分成兩個項目:包含(WPF)UI的項目和包含WCF服務客戶端的第二個項目。當使用WCF服務時,XAML設計器不起作用

將第二個項目的app.config中的端點定義複製到第一個項目(當然是啓動項目)的app.config後,應用程序正在運行。

但是由於我開始使用WCF服務客戶端,XAML設計器不再工作。它總是顯示異常:

找不到在ServiceModel客戶端配置部分中引用合同'MyContract'的默認端點元素。這可能是因爲沒有找到適用於您的應用程序的配置文件,或者因爲在客戶端元素中找不到匹配此合同的端點元素。

這與我在將端點定義複製到其他app.config文件之前得到的完全相同。所以我猜XAML設計者不會使用這種配置。是否有可能解決這個奇怪的行爲?如果XAML設計者完全不使用WCF(它根本不應該做任何事情,恕我直言),只需使用一些默認數據就可以了。

我已經考慮過使用RhinoMocks在DesignerMode案例中扼殺WCF服務客戶端,但是存儲異步WCF調用並不是最簡單的事情。

任何想法?

+0

怎麼就你的XAML對象調用WCF的東西?發佈您的代碼 –

+0

我已編輯您的標題。請參閱:「[應該在其標題中包含」標籤「](http://meta.stackexchange.com/questions/19190/)」,其中的共識是「不,他們不應該」。 –

+0

坦率地說,我現在不是爲什麼XAML設計者調用WCF服務。我使用的ViewModel在其構造函數中調用WCF服務。也許XAML設計器構造一個ViewModel對象? – Baldewin

回答

5

我發現瞭如何避免這個問題:如果我在我的業務對象上調用了ViewModel的構造函數(在主窗口中定義爲DataContext)的WCF通信的任何東西,XAML設計器不起作用XAML文件)。

簡單

if (DesignerProperties.GetIsInDesignMode(new DependencyObject())) 
{ 
    return; 
} 

再次訪問業務對象,使XAML設計工作之前。

0

另外 - 逆向工程;即通過將服務引用的東西移動到'main'app.config中,可以通過'child'項目找到它。

+0

逆流什麼?你在說什麼? – Zack

0

有同樣的問題。

我的解決方案是將視圖模型分配從xaml移動到.cs代碼文件。

第1步:刪除您的XAML:

<Window.DataContext> 
    <viewModel:MainViewModel/> 
</Window.DataContext> 

第2步:添加到您的窗口構造函數的.cs代碼文件:

DataContext = new MainViewModel();