C# 使用WCF的自定义控件中断VS2010设计器视图

C# 使用WCF的自定义控件中断VS2010设计器视图,c#,visual-studio-2010,wcf,silverlight,C#,Visual Studio 2010,Wcf,Silverlight,我为Silverlight网站设计了一个自定义控件。当我运行调试器,或者释放它并通过http将其拉上时,该控件工作得非常好。在控件本身的设计器视图中,它也显示良好 当我将该控件作为控件添加到MainPage.xaml应用程序时,问题就出现了。设计者打断说:发生了未处理的异常。System.NullReferenceException 对象引用未设置为对象的实例 控件在运行其Loaded()事件时从WCF服务提取数据。WCF服务位于远程IIS服务器上,而不是本地主机上 我认为控件正在崩溃,因为它无

我为Silverlight网站设计了一个自定义控件。当我运行调试器,或者释放它并通过http将其拉上时,该控件工作得非常好。在控件本身的设计器视图中,它也显示良好

当我将该控件作为控件添加到MainPage.xaml应用程序时,问题就出现了。设计者打断说:发生了未处理的异常。System.NullReferenceException 对象引用未设置为对象的实例

控件在运行其Loaded()事件时从WCF服务提取数据。WCF服务位于远程IIS服务器上,而不是本地主机上

我认为控件正在崩溃,因为它无法从designer视图中的服务中提取数据。有办法解决这个问题吗?提前感谢。

您可以使用该酒店。如果代码在VS designer或Expression Blend等设计器工具中运行,则此属性的值为
true
,否则为
false


Loaded
事件处理程序中,您可以读取此属性的值,并且仅当此属性的值为
false

时才调用WCF服务。除了@Luke所说的,您实际上应该修复问题的核心:数据加载代码在加载失败时抛出。也许只是优雅地处理错误,捕捉错误并返回空数据?通常,对于用户体验来说,不显示任何内容(或显示消息)比显示崩溃要好。。您的控制器现在也将在实际释放模式下崩溃-即,如果数据连接失败


IsInDesignTool属性仍然非常方便:一旦加载数据失败,在返回空数据集之前,请检查IsInDesignTool是否为真(如Luke所说)-如果为真,则返回一个硬编码的示例数据集。这样,当contorl无法加载且检测到VisualStudio或Blend时,它将显示一些测试数据,并在设计视图中显示为已填充内容。

感谢您的帮助。很好,我应该更优雅地处理这个问题。这是一个简单的应用程序,所以它在发布时无法加载的可能性很小,但应该被涵盖。