由于 运行 程序集路径不正确导致 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。