I am trying to access an app resource from my resources like this:
LinearGradientBrush lb = Application.Current.Resources["FFG"] as LinearGradientBrush;
However, this throws a NullReferenceException. I tried this code to see what was null:
Debug.WriteLine(this.Resources.Count());
Also returned a NullReferenceException.
What's even stranger is that this works:
(Storyboard)this.Resources["LayersOut"]).Begin();
Can this.Resources possibly be null, even when I have all of this in the resources area of the XAML?
Note that my code above is ran after InitializeComponent();
(Removed all of the storyboards for ease of reading)
<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>
Application.Current.Resources refers to the resources defined in App.xaml, not the current page. Try accessing this way in the code behind:
LinearGradientBrush lb = this.Resources["FFG"] as LinearGradientBrush;
or move the brush definition on App.xaml and then your code should work too:
LinearGradientBrush lb = Application.Current.Resources["FFG"] as LinearGradientBrush;
You need to write the following code in your App.xaml
:
<Application.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="Path to your resource file" />
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Application.Resources>
Then you'll can get it like this:
LinearGradientBrush lb = Application.Current.Resources["FFG"] as LinearGradientBrush;
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.