WPF窗口的背景颜色不是由样式自动设置的

时间:2017-02-22 07:10:09

标签: wpf xaml

我用一个窗口创建了简单的WPF应用程序。我想要的是自动将背景颜色应用于所有窗口。但是,颜色不适用。 这是示例项目的link。以下是App中的XAML:

<Application x:Class="SampleWPFApp.App"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:local="clr-namespace:SampleWPFApp"
             StartupUri="MainWindow.xaml">
    <Application.Resources>
        <Style TargetType="Window">
            <Setter Property="Background">
                <Setter.Value>
                    <SolidColorBrush Color="#FF3B444B" />
                </Setter.Value>
            </Setter>
        </Style>
        <Style TargetType="local:MainWindow" BasedOn="{StaticResource Window}" />
    </Application.Resources>
</Application>

逻辑来自here

修改

嗯,当背景没有设置时,我对没什么好处 - 它没有在VS编辑器中设置。程序运行时,后台运行正常。 Ragavan和mm8 的解决方案是有效的,尽管它们是相同的,BasedOn="{StaticResource Window}"让我们省略了样式的关键(Window关键本身)。

唉,编辑器没有显示背景,虽然明确设置样式(在MainWindow&#39; XAML中)会显示背景。

3 个答案:

答案 0 :(得分:3)

基于不会直接绑定窗口。替换此代码BasedOn="{StaticResource {x:Type Window}}"

<强>的App.xaml

<Application x:Class="SampleWPFApp.App"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:local="clr-namespace:SampleWPFApp"
             StartupUri="MainWindow.xaml">
    <Application.Resources>
        <Style TargetType="Window">
            <Setter Property="Background">
                <Setter.Value>
                    <SolidColorBrush Color="#FF3B444B" />
                </Setter.Value>
            </Setter>
        </Style>
        <Style TargetType="local:MainWindow" BasedOn="{StaticResource {x:Type Window}}"/>
    </Application.Resources>
</Application>

答案 1 :(得分:0)

  1. 在WPF中,您为类型设置样式资源,而不是为类型实例设置样式资源。因此,应该删除下面的行。
  2.   

    样式TargetType =“local:MainWindow”BasedOn =“{StaticResource Window}”/&gt;

    1. 在您的情况下,正在应用Windows背景,但它只是不可见,因为它可能有一个面板。例如,在创建新窗口时,默认情况下它将具有Grid。添加以下行,您将获得整个窗口的背景。请在下面的行中添加&amp; LT字符。
    2.   

      &amp; LTStyle TargetType =“{x:Type Grid}”BasedOn =“{x:Null}”&gt;   &amp; LTSetter Property =“Background”Value =“Black”/&gt;   &安培; LT /样式和GT;

答案 2 :(得分:0)

只需将您的风格设为x:Key,并将MainWindow风格基于此风格。这对我来说很有意义:

<Application x:Class="SampleWPFApp.App"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:local="clr-namespace:SampleWPFApp"
             StartupUri="MainWindow.xaml">
    <Application.Resources>
        <Style x:Key="myWindowStyle" TargetType="Window">
            <Setter Property="Background">
                <Setter.Value>
                    <SolidColorBrush Color="#FF3B444B" />
                </Setter.Value>
            </Setter>
        </Style>
        <Style TargetType="local:MainWindow" BasedOn="{StaticResource myWindowStyle}" />
    </Application.Resources>
</Application>