82

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

4

4 に答える 4

141

まず、設定が定義されている名前空間を設計するカスタム 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 ModifierPublicを に、Scopeを に設定することを忘れないでください。User

于 2009-05-10T09:57:18.203 に答える
9

@CSharper の回答は、VB.NET でコーディングされた私の WPF アプリケーションでは機能しませんでした (他の WPF アプリケーションの明らかに 99.999% とは異なり、C# ではSettingsありMyApp.Propertiesません)。再構築後も離れています。

オンラインで多くの検索を行った後、私にとって代わりに機能したlocalのは、アプリケーションのメイン ウィンドウ XAML ファイルで既定で作成された XAML 名前空間を代わりに使用することでした。

<Window
    <!-- Snip -->
    xmlns:local="clr-namespace:MyApp"
    <!-- Snip -->
><!-- Snip --></Window>

...そして、次のようなものを使用して、それを介して設定にバインドします(ここでは、デフォルトのFriendアクセス修飾子を使用して、タイプとスコープのユーザーMyBooleanSettingのプロジェクトプロパティで定義した設定です):Boolean

<CheckBox IsChecked="{Binding Source={x:Static local:MySettings.Default}, Path=MyBooleanSetting, Mode=TwoWay}"
          Content="This is a bound CheckBox."/>

設定が実際に保存されていることを確認するには、必ず

MySettings.Default.Save()

...コード ビハインドのどこか (ファイルのMe.Closingイベントなど)。MainWindow.xaml.vb

(インスピレーションについては、このVisual Studio フォーラムの投稿の功績によるものです。Muhammad Siddiqi による返信を参照してください。)

于 2016-02-24T15:51:57.467 に答える
0

UserSettings をバインドする方法は次のとおりです。

propdp入力してからタブを2回入力して、依存変数を生成します。

    public UserSettings userSettings
    {
        get { return (UserSettings)GetValue(userSettingsProperty); }
        set { SetValue(userSettingsProperty, value); }
    }
    public static readonly DependencyProperty userSettingsProperty =
        DependencyProperty.Register("userSettings", typeof(UserSettings), typeof(MainWindow), new PropertyMetadata(UserSettings.Default));

これで、次の方法でバインドできますuserSettings

Value="{Binding userSettings.SomeUserSettingHere, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"

UserSettings を変更するとき、または終了時に UserSettings を保存してください。

UserSettings.Default.Save();
于 2020-01-13T19:26:32.043 に答える