由于 运行 程序集路径不正确导致 WPF 设计器错误
WPF designer error due to incorrect running assembly path
我有一个控件,它在加载时解析一个带有国家名称的 XML 文件,然后填充一个 ComboBox。我按如下方式访问 XML:
public DataTable GetData()
{
DataTable dt = new DataTable();
DataSet ds = new DataSet();
ds.ReadXml(AppDomain.CurrentDomain.BaseDirectory + @"..\..\Resources\XML\countries.xml");
return ds.Tables[0];
}
GetData 在控件的 Loaded 处理程序中调用。
但是,在设计时,我收到一条错误消息,指出 XML 文件中的目录不存在,正如您所看到的,它正在寻找错误的 AppDomain 路径(Visual Studio,而不是项目):
我该如何解决这种行为?
避免这种情况的典型方法是将代码包装在一个检查中,以查看它是否在设计器中 运行。
DesignerProperties.GetIsInDesignMode(this)
在设计模式下 return 为真,在应用 运行 "for real" 时为假(如果从 DesignerObject 调用)。你应该只在不在设计 mdoe 中时尝试阅读你的 xml。
我有一个控件,它在加载时解析一个带有国家名称的 XML 文件,然后填充一个 ComboBox。我按如下方式访问 XML:
public DataTable GetData()
{
DataTable dt = new DataTable();
DataSet ds = new DataSet();
ds.ReadXml(AppDomain.CurrentDomain.BaseDirectory + @"..\..\Resources\XML\countries.xml");
return ds.Tables[0];
}
GetData 在控件的 Loaded 处理程序中调用。
但是,在设计时,我收到一条错误消息,指出 XML 文件中的目录不存在,正如您所看到的,它正在寻找错误的 AppDomain 路径(Visual Studio,而不是项目):
我该如何解决这种行为?
避免这种情况的典型方法是将代码包装在一个检查中,以查看它是否在设计器中 运行。
DesignerProperties.GetIsInDesignMode(this)
在设计模式下 return 为真,在应用 运行 "for real" 时为假(如果从 DesignerObject 调用)。你应该只在不在设计 mdoe 中时尝试阅读你的 xml。