1

在我的应用程序,我想创建一个具有GradientStop s的系统颜色褪色线,我试图做这样的:安装系统颜色以一个LinearGradientBrush

<UserControl.Resources> 
    <Style x:Key="Divider" TargetType="Rectangle"> 
     <Setter Property="Height" Value="2" /> 
     <Setter Property="Fill"> 
      <Setter.Value> 
       <LinearGradientBrush StartPoint="0,0" EndPoint="1,1"> 
        <GradientStop Color="{StaticResource PhoneChromeBrush}" Offset="0.0" /> 
        <GradientStop Color="{StaticResource PhoneInverseBackgroundBrush}" Offset="1.0" /> 
       </LinearGradientBrush> 
      </Setter.Value> 
     </Setter> 
    </Style> 
</UserControl.Resources> 

但是,当我尝试编译项目我得到以下错误:

A first chance exception of type 'System.Windows.Markup.XamlParseException' occurred in System.Windows.ni.dll 
An exception of type 'System.Windows.Markup.XamlParseException' occurred in System.Windows.ni.dll but was not handled in user code 

我应该怎么做才能解决这个问题?

回答

3

GradientStop.Color需要一个颜色,而不是刷。使用PhoneChromeColorPhoneInverseBackgroundColor代替:

<UserControl.Resources> 
    <Style x:Key="Divider" TargetType="Rectangle"> 
     <Setter Property="Height" Value="2" /> 
     <Setter Property="Fill"> 
      <Setter.Value> 
       <LinearGradientBrush StartPoint="0,0" EndPoint="1,1"> 
        <GradientStop Color="{StaticResource PhoneChromeColor}" Offset="0.0" /> 
        <GradientStop Color="{StaticResource PhoneInverseBackgroundColor}" Offset="1.0" /> 
       </LinearGradientBrush> 
      </Setter.Value> 
     </Setter> 
    </Style> 
</UserControl.Resources> 
0

我不确定,但看起来您可能会将静态颜色设置为笔刷。很难说,因为您从未将代码发布到“PhoneChromeBrush”或“PhoneInverseBackgroundBrush”的静态资源。但是,你正在设置渐变停止,如果他们是渐变本身,可能会破坏你的代码。通常你保留“刷”的梯度,所以我还不能确定:

你能不能做这样的事情:

<UserControl.Resources> 

<LinearGradientBrush x:Key="MoneyBrush" EndPoint="0.5,1" StartPoint="0.5,0"> 
       <GradientStop Color="#3A883A" Offset="1" /> 
       <GradientStop Color="#FFFFFF" Offset="0" /> 
       <GradientStop Color="#FF53AA75" Offset="0.50" /> 
       <GradientStop Color="#073307" Offset="0.95" /> 
      </LinearGradientBrush> 
     <Style x:Key="Divider" TargetType="Rectangle"> 
      <Setter Property="Height" Value="2" /> 
      <Setter Property="Fill" Value="{StaticResource MoneyBrush}"/> 
     </Style> 
    </UserControl.Resources> 
+0

'PhoneChromeBrush'和'PhoneInverseBackgroundBrush'预先定义在WP8的应用程序,他们不是渐变,但纯色画笔。 – Anton