1

我正在 Visual Studio 2010 中开发 WPF 应用程序。

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

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

如果你们中的任何人以前遇到过这种情况,是否有可用的通用解决方法?

编辑,根据菲尔的要求:

这可以通过在窗口中放置标签来轻松复制,à la:

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

在视图模型中,将 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

4

1 回答 1

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

于 2012-04-20T20:58:21.740 回答