web-dev-qa-db-ja.com

設定で定義された値にバインドする

WPFでは、設定で定義された値でバインディングを使用できますか?これが可能であれば、サンプルを提供してください。

71
Moheb

最初に、設定が定義されている名前空間を設計するカスタムXML名前空間を追加する必要があります。

xmlns:properties="clr-namespace:TestSettings.Properties"

次に、XAMLファイルで、次の構文を使用してデフォルト設定インスタンスにアクセスします。

{x:Static properties:Settings.Default}

したがって、最終的な結果コードは次のとおりです。

<ListBox x:Name="lb"
         ItemsSource="{Binding Source={x:Static properties:Settings.Default},
                               Path=Names}" />

ソース: WPF-コントロールを設定で定義されたプロパティにバインドする方法?


注:@Danielと@nabulkeが指摘したように、設定ファイルのAccess Modifierを忘れずに設定してくださいPublicおよびScopeto User

117
CSharper

上記のソリューションは機能しますが、非常に冗長です...代わりにカスタムマークアップ拡張機能を使用できます。

<ListBox x:Name="lb" ItemsSource="{my:SettingBinding Names}" />

この拡張機能のコードは次のとおりです。

public class SettingBindingExtension : Binding
{
    public SettingBindingExtension()
    {
        Initialize();
    }

    public SettingBindingExtension(string path)
        :base(path)
    {
        Initialize();
    }

    private void Initialize()
    {
        this.Source = WpfApplication1.Properties.Settings.Default;
        this.Mode = BindingMode.TwoWay;
    }
}

詳細はこちら: http://www.thomaslevesque.com/2008/11/18/wpf-binding-to-application-settings-using-a-markup-extension/

29
Thomas Levesque