Вы захотите привязать значения в вашем стиле к некоторому статическому классу - например, к настройкам приложения по умолчанию - который может быть изменен любым классом, определяющим, какими должны быть значения.
В приложении ниже я создал свойство с именем FontSize
в файле Settings.settings
. Я добавил соответствующее пространство имен в файл XAML и теперь могу привязываться к нему, как мне нравится:
<Window x:Class="WpfApplication1.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:my="clr-namespace:WpfApplication1"
xmlns:prop="clr-namespace:WpfApplication1.Properties"
Title="MainWindow" Height="350" Width="525">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="auto" />
<RowDefinition Height="auto" />
<RowDefinition />
</Grid.RowDefinitions>
<Grid.Resources>
<Style TargetType="TextBlock" x:Key="myStyle">
<Setter Property="FontSize" Value="{Binding FontSize, Source={x:Static prop:Settings.Default}}" />
</Style>
</Grid.Resources>
<TextBlock Style="{DynamicResource myStyle}" Text="The quick brown fox jumped over the lazy dog." />
<TextBox Grid.Row="1" Text="{Binding FontSize, Source={x:Static prop:Settings.Default}, UpdateSourceTrigger=PropertyChanged}" />
</Grid>
</Window>
Я связал значение непосредственно с TextBox
, но само собой разумеется, что настоятельно рекомендуется какой-то механизм управления, например, в модели представления.
Наконец, если вы хотите сохранить настройки, все, что вам нужно сделать, это вызвать метод класса Save
, например, в обработчике события приложения Exit
:
private void Application_Exit(object sender, ExitEventArgs e)
{
WpfApplication1.Properties.Settings.Default.Save();
}