我正在尝试使用名为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>
答案 0 :(得分:1)
NullReferenceException
表示某些内容为null,被视为非null。如果这是演员问题,那么您将获得InvalidCastException
。您的代码是:
key.Fill = (LinearGradientBrush)this.Resources["PrecipHour"];
有三种可能的东西正在访问它们的属性,因此可以为null:
key
this
this.Resources
this
永远不能为空,因此我们留下 1 和 3 。您可以使用调试器,甚至只使用Debug.Assert
语句来确定哪些语句失败。