Почему не работает настройка стиля фона окна? - PullRequest
11 голосов
/ 01 августа 2011

Вот App.xaml:

<Application>
<Application.Resources>
    <ResourceDictionary>
        <Style TargetType="Window">
            <Setter Property="SnapsToDevicePixels" Value="True"/>
            <Setter Property="Background" Value="{DynamicResource {x:Static SystemColors.ControlBrushKey}}"/>
        </Style>
    </ResourceDictionary>
</Application.Resources>
</Application>

У меня также есть MainWindow.xaml.При просмотре в режиме «Дизайн» в VS его фон действительно серый, как и должно быть.В любом случае, когда приложение работает, фон окна по умолчанию белый.

Почему?

Как это исправить?Я хочу, чтобы все окна имели стандартный фон по умолчанию.

Ответы [ 2 ]

18 голосов
/ 01 августа 2011

Проблема во время выполнения, тип вашего окна будет MainWindow, а не Window. Неявные стили не применяются к производным типам TargetType. Таким образом, ваш стиль не будет применен.

Во время разработки вы проектируете свой MainWindow, но я подозреваю, что он создает Window в качестве основы.

Вам необходимо изменить тип в соответствии с типом вашего окна.

12 голосов
/ 01 августа 2011

После ответа от CodeNaked вам нужно будет создать Style для каждого Window, но вы можете использовать один и тот же стиль для всех них с BasedOn как это

<Application.Resources>
    <ResourceDictionary>
        <Style TargetType="Window">
            <Setter Property="SnapsToDevicePixels" Value="True"/>
            <Setter Property="Background" Value="{DynamicResource {x:Static SystemColors.ControlBrushKey}}"/>
        </Style>
        <Style TargetType="{x:Type local:MainWindow}"
               BasedOn="{StaticResource {x:Type Window}}"/>
        <Style TargetType="{x:Type local:SomeOtherWindow}"
               BasedOn="{StaticResource {x:Type Window}}"/>
        <!-- Add more Windows here... -->
    </ResourceDictionary>
</Application.Resources
...