2010-01-20 104 views
12

我需要使用资源来设置WPF应用程序中主窗口的颜色。由于资源声明出现在窗口声明(我正在导入资源字典)之后,因此我无法在Window对象中使用Background属性。所以,我认为我会这样设置背景:使用资源设置窗口背景颜色

<Window.Resources> 
... 
</Window.Resources> 

<Window.Background> 
    <SolidColorBrush Color="{StaticResource WindowBackgroundBrush}" /> 
</Window.Background> 

我的语法有点偏差,因为对象不会为其Color属性使用画笔资源。什么是修复?谢谢你的帮助。

回答

15

试试这个

<Window.Background> 
    <StaticResource ResourceKey="WindowBackgroundBrush" /> 
</Window.Background> 
0

解决方法是将资源放入App.xaml中。这样你就可以在你的窗口上设置背景而没有任何问题。

+0

一个解决方案,但不是解决方案。对于涉及多个项目的应用程序(如Prism应用程序)来说这不太合适。 – 2010-01-20 14:58:48

16

这个工程:

<Window x:Class="Moria.Net.MainWindow" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     Title="MainWindow" 
     x:Name="window" 
     Background="{DynamicResource WindowBrush}" 
     Width="800" Height="600"> 
    <Window.Resources> 
     <SolidColorBrush x:Key="WindowBrush" Color="LightGray"/> 
    </Window.Resources> 
</Window> 

这里要注意的主要事情是x:名称窗口,并在后台财产

alternativly的DynamicResource ,这也适用于......

<Window.Resources> 
     <SolidColorBrush x:Key="WindowBrush" Color="LightGray"/> 
    </Window.Resources> 
    <Window.Style> 
     <Style TargetType="{x:Type Window}"> 
      <Setter Property="Background" Value="{StaticResource WindowBrush}"/> 
     </Style> 
    </Window.Style> 

作为一个方面,如果你想使用主题为你的应用程序,你应该看看component resource keys