Привязка к свойству MainWindowViewModel из app.xaml - PullRequest
0 голосов
/ 14 октября 2019

Я пытаюсь изменить размер шрифта глобально. Для этого я добавил стили в app.xaml. Здесь мое FontSz свойство находится в MainWindowViewModel. Есть ли способ сделать это связывание возможным?

<Application.Resources>
    <Style TargetType="{x:Type Control}" x:Key="baseStyle">
        <Setter Property="FontSize" Value="{Binding Path=???.FontSz}" />
    </Style>
    <Style TargetType="{x:Type Button}" BasedOn="{StaticResource baseStyle}"/>
    <Style TargetType="{x:Type Label}" BasedOn="{StaticResource baseStyle}"/>
</Application.Resources>

1 Ответ

2 голосов
/ 14 октября 2019

Для этого вам нужно будет использовать DynamicResouce . Добавьте системное пространство имен, как показано ниже

xmlns:system="clr-namespace:System;assembly=mscorlib"

<Application.Resources>

    <system:Double x:Key="FontSz">20</system:Double>

    <Style x:Key="baseStyle" 
           TargetType="{x:Type Control}">
        <Setter Property="FontSize" 
                Value="{DynamicResource FontSz}"/>
    </Style>

    <Style TargetType="{x:Type Button}"
           BasedOn="{StaticResource baseStyle}"/>

    <Style TargetType="{x:Type Label}" 
           BasedOn="{StaticResource baseStyle}"/>

</Application.Resources>

MainWindowViewModel При выполнении команды добавьте следующий код:

Application.Current.Resources["FontSz"] = 18d;

Размер шрифта можно изменить с 18d наРазмер шрифта, выбранный пользователем в вашей MainViewModel.

...