背景与径向画笔和文本块的样式模板

时间:2015-12-14 15:43:43

标签: c# wpf xaml

我有一个功能区标签。单击其中一个选项卡时,它会在网格上加载一个具有不同控件的新页面。

但我希望所有网格都具有相同的背景。所以我相信这是Styles非常有用的地方。我可以在app.xaml中声明一个作为应用程序资源的一部分。

所以我在数据网格中为一行做了这个,如下所示。

 <LinearGradientBrush x:Key="brushRowSend" StartPoint="0,0" EndPoint="1,1">
        <GradientStop Offset="0" Color="WhiteSmoke"/>
        <GradientStop Offset="1" Color="Transparent"/>
    </LinearGradientBrush>

但是我的背景是一个径向渐变画笔,它还有一个包含一些文字的文本块&#34;我的应用名称&#34;。

所以目前我的代码主要是在Blend中创建的。那么我如何将其分解为一种可以重复使用而不是复制和粘贴的风格呢?

<Grid Grid.RowSpan="7" Grid.ColumnSpan="3" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" RenderTransformOrigin="0.507,0.504" Opacity="0.75">
                <Grid.Background>
                    <RadialGradientBrush>
                        <GradientStop Color="#FF1414FD"/>
                        <GradientStop Color="#FF0E0D0D" Offset="1"/>
                        <GradientStop Color="#FF2159CF" Offset="0.556"/>
                    </RadialGradientBrush>
                </Grid.Background>
                <Grid.Effect>
                    <DropShadowEffect BlurRadius="0" Direction="200" Color="#FF1212EC"/>
                </Grid.Effect>
                <Grid.RenderTransform>
                    <TransformGroup>
                        <ScaleTransform/>
                        <SkewTransform/>
                        <RotateTransform Angle="-0.195"/>
                        <TranslateTransform/>
                    </TransformGroup>
                </Grid.RenderTransform>
                <TextBlock x:Name="textBlock" Margin="10,98.593,10,117.706" TextWrapping="Wrap" HorizontalAlignment="Center" VerticalAlignment="Center" Foreground="#FFFDF5F5" FontSize="64" FontStretch="UltraExpanded" Width="468.838" FontFamily="Calibri Light">My App Name</TextBlock>
            </Grid>

1 个答案:

答案 0 :(得分:1)

你需要一个VisualBrush。使用VisualBrush,您可以使用任何Visual元素作为绘画源。

在你的情况下你应该这样做:

<Window.Resources>
    <VisualBrush x:Key="GridBrushKey">
        <VisualBrush.Visual>
            <Grid Grid.RowSpan="7" Grid.ColumnSpan="3" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" RenderTransformOrigin="0.507,0.504" Opacity="0.75">
                <Grid.Background>
                    <RadialGradientBrush>
                        <GradientStop Color="#FF1414FD"/>
                        <GradientStop Color="#FF0E0D0D" Offset="1"/>
                        <GradientStop Color="#FF2159CF" Offset="0.556"/>
                    </RadialGradientBrush>
                </Grid.Background>
                <Grid.Effect>
                    <DropShadowEffect BlurRadius="0" Direction="200" Color="#FF1212EC"/>
                </Grid.Effect>
                <Grid.RenderTransform>
                    <TransformGroup>
                        <ScaleTransform/>
                        <SkewTransform/>
                        <RotateTransform Angle="-0.195"/>
                        <TranslateTransform/>
                    </TransformGroup>
                </Grid.RenderTransform>
                <TextBlock x:Name="textBlock" Margin="10,98.593,10,117.706" TextWrapping="Wrap" HorizontalAlignment="Center" VerticalAlignment="Center" Foreground="#FFFDF5F5" FontSize="64" FontStretch="UltraExpanded" Width="468.838" FontFamily="Calibri Light">My App Name</TextBlock>
            </Grid>
        </VisualBrush.Visual>
    </VisualBrush>
</Window.Resources>

<Grid Background="{StaticResource GridBrushKey}">

</Grid>