Почему не работает стиль оформления фона окна?

Вот 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, то он действительно серый, как и должно быть. В любом случае, когда приложение запущено, фон фона по умолчанию является белым.

Почему?

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

Ответ 1

Следуя ответам 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

Ответ 2

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

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

Вам нужно будет изменить тип, чтобы он соответствовал типу вашего окна.