3

所以这就是正在发生的事情,我可以将对象的背景设置为渐变,方法是直接将画笔放入Grid.Background 或设置Background="{StaticResource BackgroundGradient}"(我认为这可行,但我刚刚测试它并且它也会使应用程序崩溃),但是通过设置它Setter ( <Setter Property="Background" Value="{StaticResource BackgroundGradient}">) 使应用程序崩溃。

第一次通过 Setter 设置它,然后我关闭应用程序并复制/粘贴 Gradient 几次并更改名称和颜色以制作我需要的其他渐变,之后每次 Setter 设置渐变时它都会崩溃。

以下是 Style 对象的相关代码:

<Style x:Key="MainBackground" TargetType="Panel">
    <Setter Property="Background" Value="{StaticResource BackgroundGradient}"/>
</Style>

这是相应的渐变(通过在设计视图中制作渐变并使用“转换为资源”生成:

<LinearGradientBrush x:Key="BackgroundGradient" EndPoint="0.5,1" StartPoint="0.5,0">
    <LinearGradientBrush.RelativeTransform>
        <CompositeTransform CenterY="0.5" CenterX="0.5" Rotation="-90"/>
    </LinearGradientBrush.RelativeTransform>
    <GradientStop Color="#9BC6C5"/>
    <GradientStop Color="#BAD8D7" Offset="1"/>
</LinearGradientBrush>

任何帮助将不胜感激。我目前可以使它工作的唯一方法是删除样式定义中对渐变的引用,但我真的不想在单个项目上设置渐变。

4

1 回答 1

2

这是一个非常普遍的问题,您必须确保

<Style x:Key="MainBackground" TargetType="Panel">
    <Setter Property="Background" Value="{StaticResource BackgroundGradient}"/>
</Style>

在此之后执行

<LinearGradientBrush x:Key="BackgroundGradient" EndPoint="0.5,1" StartPoint="0.5,0">
    <LinearGradientBrush.RelativeTransform>
        <CompositeTransform CenterY="0.5" CenterX="0.5" Rotation="-90"/>
    </LinearGradientBrush.RelativeTransform>
    <GradientStop Color="#9BC6C5"/>
    <GradientStop Color="#BAD8D7" Offset="1"/>
</LinearGradientBrush>

如果您有 2 个或更多文件来设置此资源,请尝试将两种样式设置在同一个文件中,并确保 Brush 在 Panel 之前定义,然后它可以工作!所以继续在单独的文件中制作它并观察首先执行的文件。

于 2012-11-04T15:11:33.357 回答