首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >WPF窗口的背景色不是由样式自动设置的

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

Stack Overflow用户
提问于 2017-02-22 07:10:08
回答 3查看 1.9K关注 0票数 4

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

代码语言:javascript
复制
<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>

逻辑取自这里。

编辑:

嗯,我一点也不介意背景没有设置--它没有设置在VS编辑器中。当程序运行时,背景就可以了。Ragavan和mm8的解决方案确实有效,尽管它们与BasedOn="{StaticResource Window}"允许我们省略样式的键(即Window键本身)的区别是一样的。

唉,编辑器没有显示背景,尽管显式设置样式(在MainWindow的XAML中)会显示背景。

EN

回答 3

Stack Overflow用户

发布于 2017-02-22 08:22:35

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

App.Xaml

代码语言:javascript
复制
<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>
票数 3
EN

Stack Overflow用户

发布于 2017-02-22 08:07:51

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

样式TargetType=“本地:主窗口”BasedOn={StaticResource窗口}“/>”

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

<Setter Property=”背景“Value="Black”/>

票数 0
EN

Stack Overflow用户

发布于 2017-02-22 12:30:55

只需给您的样式一个x:Key,并将MainWindow样式建立在这个样式之上。这对我来说很神奇:

代码语言:javascript
复制
<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>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42384844

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档