1

Visual Studio 2010 で WPF アプリケーションを作成しています。

アプリケーション ウィンドウがデザイナーに読み込まれるときに、接続文字列またはアプリ設定を取得しようとすると、常に null が返されます。たとえば、値が "bar" の "foo" というアプリ設定がある場合、デザイナーでConnectionManager.AppSettings["foo"]は null が返されますが、実行時には "bar" が返されます。ウィンドウがデザイナーで例外をスローしているため、これは私を驚かせています。

これは Visual Studio の既知のバグ (または「機能」) ですか? 他の場所でそれについての言及を見つけることができませんでした。

以前にこれに遭遇したことがある場合、利用可能な一般的な回避策はありますか?

フィルのリクエストによる編集:

これは、次のように、ウィンドウにラベルを配置することで簡単に複製できます。

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

ビューモデルで、TheText 要素をアプリケーション設定の値「foo」に設定します。

TheText = ConfigurationManager.AppSettings["foo"];

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

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

編集:設定APIを使用することがこれを回避する唯一の方法であるように思われるため、Philのソリューションを正しいものとしてマークしました。残念ながら、すべての場合に有効な回避策ではありません。これについて 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 に答える