Wpf 可以<;设定值>;里面有多个网格

Wpf 可以<;设定值>;里面有多个网格,wpf,silverlight,silverlight-3.0,Wpf,Silverlight,Silverlight 3.0,我想在App.XAML中定义我的应用程序的背景。背景先前在另一个xaml页面中定义,该页面中有多个网格,如下所示: <Grid x:Key="GridGeneric" d:LayoutOverrides="Width, Height"> <Grid.Background> <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0"> &

我想在App.XAML中定义我的应用程序的背景。背景先前在另一个xaml页面中定义,该页面中有多个网格,如下所示:

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

------
-----
现在,我想将其放入我的App.xaml中,如下所示:

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

---------
---------
但在这样做的同时,我得到了以下例外


您试图将网格设置为背景属性,这是不可能的。background属性需要笔刷,因此会出现异常

您可以使用

否则,您必须在窗口中使用嵌套的网格布局,并像这样应用这两种样式

在窗口中绘制此布局:

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