WPFでは、設定で定義された値でバインディングを使用できますか? 可能であれば、サンプルを提供してください。
4 に答える
まず、設定が定義されている名前空間を設計するカスタム 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
@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 による返信を参照してください。)
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();