3

我刚刚开始使用 WCF 服务迈出第一步,并制作了一个小 WPF 应用程序,用于显示从 WCF 服务检索到的数据。我将应用程序拆分为两个项目:一个包含 (WPF) UI 的项目和一个包含 WCF 服务客户端的项目。

将端点定义从第二个项目的 app.config 复制到第一个项目(当然是 StartUp 项目)的 app.config 后,应用程序现在正在运行。

但是自从我开始使用 WCF 服务客户端后,XAML 设计器就不再工作了。它总是显示异常:

在 ServiceModel 客户端配置部分中找不到引用合同“MyContract”的默认端点元素。这可能是因为没有为您的应用程序找到配置文件,或者因为在客户端元素中找不到与此合同匹配的端点元素。

这与我在将端点定义复制到另一个 app.config 文件之前遇到的异常完全相同。所以我猜 XAML 设计器不使用这个配置。是否有可能解决这种奇怪的行为?如果 XAML 设计器根本不使用 WCF(恕我直言,无论如何都不应该这样做),而只使用一些默认数据,那对我来说没问题。

我已经考虑过在DesignerMode案例中使用 RhinoMocks 存根 WCF 服务客户端,但是存根异步 WCF 调用并不是最简单的事情。

有任何想法吗?

4

3 回答 3

6

我发现了如何避免这个问题:如果我在我的业务对象上调用从 ViewModel 的构造函数(在主窗口的 XAML 文件中定义为 DataContext)进行 WCF 通信的任何东西,XAML 设计器似乎不起作用。

一个简单的

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

在访问业务对象之前使 XAML 设计器再次工作。

于 2012-12-28T20:47:17.720 回答
0

还有——相反的作品;即,通过将服务引用内容移动到“主”app.config,“子”项目可以找到它。

于 2013-11-01T19:09:42.400 回答
0

有同样的问题。

我的解决方案是将视图模型分配从xaml代码.cs文件移动。

第 1 步:在您的 xaml 中删除:

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

第 2 步:在 .cs 代码文件中添加到您的窗口构造函数:

DataContext = new MainViewModel();
于 2016-01-05T12:11:48.170 回答