2017-02-22 54 views
3

我已经创建了一个窗口的简单WPF应用程序。我想要的是自动应用背景颜色到所有窗口。但是,颜色不适用。 这里的link来样品项目。以下是App中的XAML:WPF窗口的背景颜色不是按样式自动设置的

<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的解决方案的工作,尽管它们与让我们省略了风格的关键(即Window关键本身)的区别相同。

唉,编辑没有显示背景,虽然明确的设置样式(在MainWindow的XAML中)使背景显示。

回答

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

样式的TargetType = “本地:主窗口” 支持算法FMP = “{StaticResource的窗口}”/>

  • 在你的情况下,被施加视窗背景但它不可见,因为它可能有一个面板。例如,当您创建一个新窗口时,默认情况下它将具有网格。添加下面的行,你会得到整个窗口的背景。请在下面的行中附加& LT字符。
  • & LTStyle的TargetType = “{x:式格栅}” 支持算法FMP = “{x:NULL}”> & LTSetter属性= “背景” 值= “黑”/> & LT /样式>

    +0

    所有这一切都没有帮助。我删除了网格 - 仍然没有结果。 – JohnyL

    +0

    我的解决方案将在窗口内使用Grid。我错了Windows背景。我已经投票了Ragavan的另一个解决方案,这正是你需要的。 –

    3

    Basedon不会直接绑定窗口。替换此代码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> 
    
    +0

    它不起作用。对你起作用吗?如果是这样,你可以分享这个项目吗? – JohnyL

    +0

    我刚刚下载了您的解决方案并更改了 – Ragavan

    +0

    我使用了您的代码 - 仍然没有结果。这是[链接](https://www.dropbox.com/s/msjo2ay73md9y8m/SampleWPFApp.zip?dl=0)到第二个项目文件。 – JohnyL

    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> 
    
    +0

    仍然无法使用!这里是使用你的代码的第三个应用[链接](https://www.dropbox.com/s/dn9208spdkdu3xn/SampleWPFApp3.zip?dl=0)。你使用哪个版本的Visual Studio?我使用VS 2017 RC(15.0.0-RC.4 + 26206.0)。 – JohnyL

    +0

    当我针对.NET Framework 4.6.1构建时,它在VS 2015中适用于我。 – mm8