2010-05-13 17 views
0

我想在App.XAML中爲我的應用程序定義背景。Can <Setter.Value>裏面有多個網格

<Grid x:Key="GridGeneric" d:LayoutOverrides="Width, Height"> 
     <Grid.Background> 
      <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0"> 
       <GradientStop Color="#FF00172E" Offset="1"/> 
       <GradientStop Color="#FF004074" Offset="0.433"/> 
       <GradientStop Color="#FF081316"/> 
       <GradientStop Color="#FF001D3F" Offset="0.215"/> 
       <GradientStop Color="#FF002043" Offset="0.818"/> 
       <GradientStop Color="#FF003B6C" Offset="0.642"/> 
      </LinearGradientBrush> 
     </Grid.Background> 
     <Grid> 
      <Grid.Background> 
       <RadialGradientBrush RadiusY="0.973" GradientOrigin="0.497,-0.276" RadiusX="1.003"> 
        <GradientStop Color="#FFB350EE" Offset="0"/> 
        <GradientStop Color="#001D3037" Offset="0.847"/> 
       </RadialGradientBrush> 
      </Grid.Background> 
     </Grid> 

------ 
----- 
</Grid> 

現在我希望把同樣的在我的App.xaml像以下:

<Style x:Key="backgroundStyle" TargetType="Grid"> 

     <Setter Property="Background"> 
      <Setter.Value> 
       <Grid> 
        <Grid.Background> 
         <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0"> 
          <GradientStop Color="#FF00172E" Offset="1"/> 
          <GradientStop Color="#FF004074" Offset="0.433"/> 
          <GradientStop Color="#FF081316"/> 
          <GradientStop Color="#FF001D3F" Offset="0.215"/> 
          <GradientStop Color="#FF002043" Offset="0.818"/> 
          <GradientStop Color="#FF003B6C" Offset="0.642"/> 
         </LinearGradientBrush> 
        </Grid.Background> 
      <Grid> 
      <Grid.Background> 
       <RadialGradientBrush RadiusY="0.973" GradientOrigin="0.497,-0.276" RadiusX="1.003"> 
         <GradientStop Color="#FFB350EE" Offset="0"/> 
         <GradientStop Color="#001D3037" Offset="0.847"/> 
        </RadialGradientBrush> 
       </Grid.Background> 
      </Grid> 
         --------- 
         --------- 
       </Grid> 
      </Setter.Value> 
     </Setter> 

    </Style> 

不過,雖然背景在另一個XAML頁面,這裏面有它的多個網格狀下以前定義這樣做我得到以下異常。

alt text http://www.freeimagehosting.net/uploads/bb1ca0d3f6.jpg

回答

2

你試圖網格設置爲背景屬性,這是不可能的。背景屬性將期望刷子,因此是例外。

你可以達到你想要使用什麼DrawingBrush

否則,你就必須在窗口中使用嵌套的網格佈局,並應用兩種風格類似這樣的

在窗口中繪製此佈局:

<Grid x:Key="GridGeneric" Background="{StaticResource OuterGridBrush}"> 
    <Grid Background="{StaticResource InnerGridBrush}"> 
    </Grid> 
</Grid> 

跌落到這一點你App.xaml中的資源部分:

<LinearGradientBrush x:Key="OuterGridBrush" EndPoint="0.5,1" StartPoint="0.5,0"> 
    <GradientStop Color="#FF00172E" Offset="1"/> 
    <GradientStop Color="#FF004074" Offset="0.433"/> 
    <GradientStop Color="#FF081316"/> 
    <GradientStop Color="#FF001D3F" Offset="0.215"/> 
    <GradientStop Color="#FF002043" Offset="0.818"/> 
    <GradientStop Color="#FF003B6C" Offset="0.642"/> 
</LinearGradientBrush> 


<RadialGradientBrush x:Key="InnerGridBrush" RadiusY="0.973" GradientOrigin="0.497,-0.276" RadiusX="1.003"> 
    <GradientStop Color="#FFB350EE" Offset="0"/> 
    <GradientStop Color="#001D3037" Offset="0.847"/> 
</RadialGradientBrush>