如何在Windows Phone 8.1中为渐变使用系统颜色?

时间:2015-12-13 13:05:51

标签: c# xaml windows-phone-8.1

我希望将主题中的系统颜色作为Windows Phone中LinearGradientBrush的一部分。而不是

<LinearGradientBrush x:Key="StandardGradientBackground"  EndPoint="0.5,1" StartPoint="0.5,0.5">
    <GradientStop Color="#FF660000" Offset="0"/>
    <GradientStop Color="#FFff0033" Offset="1"/>
</LinearGradientBrush>

我想使用像

这样的东西
<LinearGradientBrush x:Key="StandardGradientBackground"  EndPoint="0.5,1" StartPoint="0.5,0.5">
    <GradientStop Color="SystemColors.ActiveBorderColor" Offset="0"/>
    <GradientStop Color="#FFff0033" Offset="1"/>
</LinearGradientBrush>

我尝试了不同的语法,并且还阅读this post,但"static is not supported in a Windows App Project"正如Visual Studio所说。

我也尝试以编程方式实现相同的目标

LinearGradientBrush linearGradientBrush =
    new LinearGradientBrush
    {
        StartPoint = new Point( 0.5, 0.5 ),
        EndPoint = new Point( 0.5, 1 )
    };
Color currentAccentColorHex = (Color)Current.Resources[ "PhoneAccentColor" ];
linearGradientBrush.GradientStops.Add( new GradientStop
{
    Color = currentAccentColorHex,
    Offset = 0
} );
linearGradientBrush.GradientStops.Add( new GradientStop
{
    Color = Colors.Black,
    Offset = 1
} );

一旦我到达我尝试访问的行(Application。)Current.Resources,我最终得到System.Exception Catastrophic failure (Exception from HRESULT: 0x8000FFFF (E_UNEXPECTED))

有什么想法吗?

更新

我正在尝试在App.xaml(分别为编程方法的App.xaml.cs)文件中设置此项,以防万一这意味着要考虑任何特殊步骤。

1 个答案:

答案 0 :(得分:1)

<LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0.5">
    <GradientStop Color="{StaticResource SystemColorControlAccentColor}" Offset="0"/>
    <GradientStop Color="#FFff0033" Offset="1"/>
</LinearGradientBrush>