我遇到了在WPF中数据绑定到服务类的问题。我的服务类有一个静态构造函数,可以读取配置信息并提取一些必需的信息。问题是在设计过程中,我得到错误,Mytype的类型初始化程序引发了异常。我相信这是因为Visual Studio的配置中不存在配置信息。当我运行应用程序时,一切正常,但由于此错误,我无法设计任何内容。
我认为如果无法获取我的数据绑定对象,设计将恢复为某些默认显示。显然它没有并杀死整个设计师。是否有关于此问题的解决方法,例如关闭数据绑定控件的动态显示。这是令人沮丧和令人失望的。我正在使用Visual Studio 2008 SP1。
这是我网格中数据绑定代码的片段。
<ObjectDataProvider ObjectType="{x:Type local:DataService}" x:Key="dataProvider"
MethodName="GetCollection" >
<ObjectDataProvider.MethodParameters>
<s:Int32>1</s:Int32>
</ObjectDataProvider.MethodParameters>
</ObjectDataProvider>
基本上,除非具有配置信息,否则DataService类无法实例化自身。我试图为我的特定情况创建一个解决方法,其中静态构造函数实例化数据存储库的具体实现。但是,我无法直接这样做,因为这会在我的项目中创建一个循环引用。我尝试继承该类并捕获父类的静态构造函数中的所有异常。那仍然行不通。关于变通方法的任何其他想法或错误日志,它显示有关抛出异常的更多详细信息。
我试图剥离所有东西以找到最低的共同点。我删除了静态构造函数,基本上返回了基本要素。我发现从数据库中检索数据的任何内容都无法呈现。如果我返回静态列表,一切都很好。我正在使用微软企业库数据访问块。同样,应用程序运行时工作正常。我假设它找不到所需的数据库连接信息,但为什么会出现问题?微软必须假设在他们构建VS2008时会发生这种情况。我做错了吗?
答案 0 :(得分:2)
如下所示
public class DataService
{
public IList<string> GetCollection()
{
if (!DesignerProperties.GetIsInDesignMode(new DependencyObject()))
{
// get data from database here
}
else
{
// return fake data for the designer
return new List<string> {"my", "test", "data"};
}
}
}
重要的是,如果它将在设计模式下使用,永远不要求任何需要配置的东西。