以编程方式应用画笔

时间:2015-02-12 22:02:31

标签: c# xaml windows-phone-8 windows-phone

我正在尝试使用名为PrecipHour的Local Resource(LinearGradientBrush)填充一个名为Key的矩形。当我运行下面的代码时,抛出了nullreferenceexception - 我不能只将一个资源转换为LinearGradientBrush吗?

C#

 key.Fill = (LinearGradientBrush)this.Resources["PrecipHour"];

XAML

<LinearGradientBrush x:Key="PrecipHour" EndPoint="0.5,1" StartPoint="0.5,0">
            <GradientStop Color="#FF661C00" Offset="0"/>
            <GradientStop Color="#FF0011BF" Offset="1"/>
            <GradientStop Color="#FF265CEC" Offset="0.838"/>
            <GradientStop Color="#FF2EFF00" Offset="0.445"/>
            <GradientStop Color="#FFF3FF00" Offset="0.253"/>
            <GradientStop Color="Red" Offset="0.125"/>
            <GradientStop Color="#FF65E040" Offset="0.626"/>
</LinearGradientBrush>

1 个答案:

答案 0 :(得分:1)

NullReferenceException表示某些内容为null,被视为非null。如果这是演员问题,那么您将获得InvalidCastException。您的代码是:

key.Fill = (LinearGradientBrush)this.Resources["PrecipHour"];

有三种可能的东西正在访问它们的属性,因此可以为null:

  1. key
  2. this
  3. this.Resources
  4. this永远不能为空,因此我们留下 1 3 。您可以使用调试器,甚至只使用Debug.Assert语句来确定哪些语句失败。