我正在使用Visual Studio2010开发WPF应用程序。
将应用程序窗口加载到设计器中时,尝试检索连接字符串或应用程序设置始终返回null。例如,如果我有一个名为"foo“的应用程序设置,值为"bar",在设计器中,ConnectionManager.AppSettings["foo"]将返回null,而在运行时,它将返回"bar”。这引起了我的一些恐慌,因为我的窗口现在在设计器中抛出异常。
这是Visual Studio中已知的错误(或“功能”)吗?我在别处找不到提到它的地方。
如果你们中的任何人以前遇到过这种情况,有没有通用的解决方法?
编辑,根据Phil的请求:
这可以通过在窗口中放置一个标签来简单地复制,比如:
<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
发布于 2012-04-21 04:58:22
我已经尝试了与您的示例类似的方法,但没有任何问题:
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
https://stackoverflow.com/questions/10251998
复制相似问题