我正在尝试从我的资源中访问应用程序资源,如下所示:
LinearGradientBrush lb = Application.Current.Resources["FFG"] as LinearGradientBrush;但是,这会抛出一个NullReferenceException。我尝试了这段代码,看看什么是空的:
Debug.WriteLine(this.Resources.Count());还返回了一个NullReferenceException。
更奇怪的是,这是可行的:
(Storyboard)this.Resources["LayersOut"]).Begin();即使我在this.Resources的资源区域中包含了所有这些内容,XAML也可能是空的吗?
注意,我上面的代码是在InitializeComponent()之后运行的;
(为方便阅读,删除了所有的故事板)
<phone:PhoneApplicationPage.Resources>
<LinearGradientBrush x:Key="PrecipBrush" EndPoint="0.5,1" StartPoint="0.5,0">
<GradientStop Color="#FF490000" Offset="0"/>
<GradientStop Color="#FFE8E8E8" Offset="1"/>
<GradientStop Color="#FF2044E4" Offset="0.838"/>
<GradientStop Color="#FF17A598" Offset="0.653"/>
<GradientStop Color="#FF22BB00" Offset="0.445"/>
<GradientStop Color="#FFFFE800" Offset="0.253"/>
<GradientStop Color="#FFFF0202" Offset="0.125"/>
</LinearGradientBrush>
<LinearGradientBrush x:Key="MRMS" EndPoint="0.5,1" StartPoint="0.5,0">
<GradientStop Color="Red" Offset="0"/>
<GradientStop Color="#FFAB59FD" Offset="1"/>
<GradientStop Color="#FF2044E4" Offset="0.838"/>
<GradientStop Color="#FF17A598" Offset="0.653"/>
<GradientStop Color="#FF22BB00" Offset="0.445"/>
<GradientStop Color="#FF005D00" Offset="0.253"/>
<GradientStop Color="Yellow" Offset="0.125"/>
</LinearGradientBrush>
<LinearGradientBrush x:Key="FFG" EndPoint="0.5,1" StartPoint="0.5,0">
<GradientStop Color="#FF460055" Offset="0"/>
<GradientStop Color="#FF23FF00" Offset="1"/>
<GradientStop Color="Yellow" Offset="0.815"/>
<GradientStop Color="Magenta" Offset="0.253"/>
<GradientStop Color="#FFB400A3" Offset="0.125"/>
<GradientStop Color="#FFB69D00" Offset="0.642"/>
<GradientStop Color="#FFB60000" Offset="0.43"/>
</LinearGradientBrush>
<LinearGradientBrush x:Key="DroughtKey" EndPoint="0.5,1" StartPoint="0.5,0">
<GradientStop Color="#FF490000" Offset="0"/>
<GradientStop Color="#FFFFD100" Offset="1"/>
<GradientStop Color="#FFB67C00" Offset="0.653"/>
<GradientStop Color="#FF746400" Offset="0.445"/>
<GradientStop Color="Red" Offset="0.253"/>
</LinearGradientBrush>
<LinearGradientBrush x:Key="ForestFire" EndPoint="0.5,1" StartPoint="0.5,0">
<GradientStop Color="#FF490000" Offset="0"/>
<GradientStop Color="#FFFFD100" Offset="1"/>
<GradientStop Color="Red" Offset="0.253"/>
</LinearGradientBrush>
<LinearGradientBrush x:Key="QPF" EndPoint="0.5,1" StartPoint="0.5,0">
<GradientStop Color="Red" Offset="0"/>
<GradientStop Color="#FF68FF00" Offset="1"/>
<GradientStop Color="#FF28B000" Offset="0.838"/>
<GradientStop Color="#FF0800BB" Offset="0.445"/>
<GradientStop Color="#FF00FFD1" Offset="0.253"/>
<GradientStop Color="#FFDC00FF" Offset="0.125"/>
<GradientStop Color="#FF126300" Offset="0.626"/>
</LinearGradientBrush>
<LinearGradientBrush x:Key="Temp" EndPoint="0.5,1" StartPoint="0.5,0">
<GradientStop Color="Red" Offset="0"/>
<GradientStop Color="#FF070097" Offset="1"/>
<GradientStop Color="#FF035FFF" Offset="0.838"/>
<GradientStop Color="#FF23FF00" Offset="0.445"/>
<GradientStop Color="Yellow" Offset="0.253"/>
<GradientStop Color="#FFFF5D00" Offset="0.125"/>
<GradientStop Color="#FF00FFF3" Offset="0.626"/>
</LinearGradientBrush>
<LinearGradientBrush x:Key="PrecipAvg" EndPoint="0.5,1" StartPoint="0.5,0">
<GradientStop Color="#FF661C00" Offset="0"/>
<GradientStop Color="#FF17A600" Offset="1"/>
<GradientStop Color="#FF26EC4A" Offset="0.838"/>
<GradientStop Color="#FFDCFF00" Offset="0.445"/>
<GradientStop Color="#FFFF8000" Offset="0.253"/>
<GradientStop Color="#FF9B3800" Offset="0.125"/>
<GradientStop Color="#FF65E040" Offset="0.626"/>
</LinearGradientBrush>
<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>
</phone:PhoneApplicationPage.Resources>发布于 2015-02-13 21:58:43
Application.Current.Resources指的是在App.xaml中定义的资源,而不是当前页面。在后面的代码中尝试这样访问:
LinearGradientBrush lb = this.Resources["FFG"] as LinearGradientBrush;或者在App.xaml上移动画笔定义,然后你的代码也应该可以工作了:
LinearGradientBrush lb = Application.Current.Resources["FFG"] as LinearGradientBrush;发布于 2015-02-13 22:32:12
您需要在App.xaml中编写以下代码
<Application.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="Path to your resource file" />
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Application.Resources>然后你可以像这样得到它:
LinearGradientBrush lb = Application.Current.Resources["FFG"] as LinearGradientBrush;https://stackoverflow.com/questions/28501023
复制相似问题