System.Configuration.ConfigurationManager在Visual Studio设计器中不起作用

时间:2012-04-20 18:59:56

标签: .net wpf visual-studio visual-studio-2010

我正在使用Visual Studio 2010中的WPF应用程序。

将应用程序窗口加载到设计器中时,尝试检索连接字符串或应用程序设置始终返回null。例如,如果我的应用程序设置名为“foo”且值为“bar”,则在设计器中,ConnectionManager.AppSettings["foo"]将返回null,而在运行时,它将返回“bar”。这让我有些惊愕,因为我的窗口现在正在设计师中抛出异常。

这是Visual Studio中的已知错误(或“功能”)吗?我无法在其他地方找到它。

如果您之前遇到过这种情况,是否有可用的常用解决方法?

按照菲尔的要求编辑:

可以通过在窗口中放置标签来轻松复制,例如:

 <Label Content="{Binding TheText}" HorizontalAlignment="Left" />

在viewmodel中,将TheText元素设置为应用程序设置“foo”的值:

TheText = ConfigurationManager.AppSettings["foo"];

app.config包含以下appSettings部分:

<appSettings>
    <add key="foo" value="bar"/>
</appSettings>
编辑:我已将Phil的解决方案标记为正确,因为似乎使用设置API是解决此问题的唯一方法。可悲的是,在所有情况下,这都不是一个可行的解决方法。我在MS Connect上提出了一个问题:https://connect.microsoft.com/VisualStudio/feedback/details/738316/system-configuration-configurationmanager-does-not-work-in-wpf-designer

1 个答案:

答案 0 :(得分:1)

我尝试过与你的例子类似的东西没有问题:

1)在项目属性“设置”选项卡中添加了字符串设置

2)添加带标签的控件

<Label Content="{Binding TheText}" HorizontalAlignment="Left" />

3)添加了视图模型

public class ViewModel
{
    public string TheText{ get{ return Settings.Default.TheSetting; } }
}

4)数据上下文

<UserControl.DataContext>
    <ViewModel/>
</UserControl.DataContext>

主要区别在于我通过Settings.Default使用键入的应用程序设置。

如果您的app.config包含此样式的设置:

  <applicationSettings>
    <MyTestApp.Properties.Settings>
      <setting name="TheSetting" serializeAs="String">
        <value>Test</value>
      </setting>
    </MyTestApp.Properties.Settings>
  </applicationSettings>

您需要使用Settings.Default.xxx