2012-04-20 9 views
0

では動作しません。2010年System.Configuration.ConfigurationManagerは、私は、Visual StudioでWPFアプリケーションに取り組んでいるのVisual Studioデザイナー

アプリケーションウィンドウをデザイナーにロードされている場合は、必ず接続文字列やアプリの設定を取得しようとし

nullを返します。たとえば、値が "bar"の "foo"というアプリ設定がある場合、デザイナではConnectionManager.AppSettings["foo"]はnullを返し、実行時には "bar"を返します。これは、私の窓が今ではデザイナーに例外を投げているので、私はいくつかの驚きを引き起こしています。

これはVisual Studioの既知のバグ(または「機能」)ですか?私はそれについて他のところで言及することができなかった。

この問題が発生した場合は、一般的な回避策がありますか?フィルの要求ごと

EDIT:

これは自明アラカルト、ウィンドウにラベルを配置することにより複製することができます。

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

とのviewmodelで、の値にTheText要素を設定します"foo" を設定したアプリケーション:

TheText = ConfigurationManager.AppSettings["foo"]; 

のapp.configには、以下のappSettingsセクションが含まれています

<appSettings> 
    <add key="foo" value="bar"/> 
</appSettings> 

EDIT:これは、設定APIを使用するように思われるため、私はPhilのソリューションを正しいものとしてマークしました。残念ながら、すべてのケースで実行可能な回避策ではありません。 )

1プロジェクトのプロパティ設定]タブで

2を設定した文字列を追加しました)追加:私は問題なしであなたの例に似たものを試してみましたhttps://connect.microsoft.com/VisualStudio/feedback/details/738316/system-configuration-configurationmanager-does-not-work-in-wpf-designer

+0

を使用する必要があるが、我々はあなたが設計時にアプリの設定を使用しているかを確認することができますか? – Phil

+0

質問が更新されました。 – ngroot

答えて

1

:私はこれについてMS Connectの問題を提起しましたラベル

<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

関連する問題