我创建了一个与WPF用户控件库关联的配置文件。在调试器中运行应用程序时或单独使用以下代码加载配置时,该代码在库的上下文中运行:
ExeConfigurationFileMap fileMap = new ExeConfigurationFileMap();
fileMap.ExeConfigFilename = "MapControl.dll.config";
Configuration config = ConfigurationManager.OpenMappedExeConfiguration(fileMap, ConfigurationUserLevel.None);
if (config != null)
{
_Instance = (MapControlConfiguration)config.GetSection("MapControlConfiguration");
}
但是,当我尝试在Visual Studio 2010的XAML设计器中查看控件时,将不会加载配置文件。使用Process Monitor,我确定它正在尝试在以下位置加载配置文件:C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\MapControl.dll.config
。这很不幸,因为那肯定不是包含配置文件的目录。 ConfigurationManager.OpenMappedExeConfiguration
期望配置文件与可执行文件相关,但在XAML设计器的上下文中,本身没有可执行文件。有没有办法指定配置文件的位置,以便在XAML设计器中查看控件时加载它?
答案 0 :(得分:0)
您可以使用System.ComponentModel.DesignerProperties.GetIsInDesignMode
方法判断您是否处于设计模式。像这样:
ExeConfigurationFileMap fileMap = new ExeConfigurationFileMap();
if (System.ComponentModel.DesignerProperties.GetIsInDesignMode(this))
{
fileMap.ExeConfigFilename = "F:\ull\Path\To\Your\Debug\MapControl.dll.config";
}
else
{
fileMap.ExeConfigFilename = "MapControl.dll.config";
}
Configuration config = ConfigurationManager.OpenMappedExeConfiguration(fileMap, ConfigurationUserLevel.None);
if (config != null)
{
_Instance = (MapControlConfiguration)config.GetSection("MapControlConfiguration");
}