1つの方法は、静的へのバインド可能なアクセスを提供するラッパークラスを作成することSettings.Default
です。
それ以来、これは必要以上の作業であることに気づきました。他の回答をご覧ください。
namespace MyApp
{
internal sealed class ResourceWrapper
{
public Settings Default
{
get
{
return Settings.Default;
}
}
}
}
ここで、それをリソースとしてどこかに追加する必要があります。App.xamlで実行できます。ここでは、それを使用しているウィンドウに対してローカルで実行しました。名前空間を忘れないでください。
xmlns:local="clr-namespace:MyApp"
<Window.Resources>
<local:ResourceWrapper x:Key="SettingsWrapper"/>
</Window.Resources>
これにバインドする必要があります。これは、MenuItem
同じウィンドウでの使用を示しています。
<Menu>
<MenuItem Header="Audio">
<MenuItem Header="Mute" IsCheckable="True"
IsChecked="{Binding Path=Default.SoundMuted, Source={StaticResource ResourceKey=SettingsWrapper}}"/>
</MenuItem>
</Menu>
私が言ったように、アプリレベルでリソースを追加することも、異なるウィンドウ/コントロールでこれらのResourceWrappersを複数作成することもできます。これらはすべて、同じ静的な基盤を指します。
テスト付きのウィンドウの完全なxaml TextBlock
:
<Window x:Class="Test_WpfApplication2.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:MyApp"
Title="MainWindow" Height="350" Width="525">
<Window.Resources>
<local:ResourceWrapper x:Key="SettingsWrapper"/>
</Window.Resources>
<Grid>
<Menu>
<MenuItem Header="Audio">
<MenuItem Header="Mute" IsCheckable="True" IsChecked="{Binding Path=Default.SoundMuted, Source={StaticResource ResourceKey=SettingsWrapper}}"/>
</MenuItem>
</Menu>
<TextBlock Text="{Binding Path=Default.SoundMuted, Source={StaticResource ResourceKey=SettingsWrapper}}" Height="23" HorizontalAlignment="Left" Margin="18,156,0,0" VerticalAlignment="Top" Width="75" />
</Grid>
</Window>