寫程式時一直報題中所示的錯誤,提示定義的某個靜態資源(staticResource)無法找到。百思不得其解,百度了一下才意識到時資源定義順序的問題。 App.xaml定義如下: 如上所示,定義了兩個資源字典:Templete.xaml和Style.xaml。發生錯誤的原因是Templete.xaml ...
寫程式時一直報題中所示的錯誤,提示定義的某個靜態資源(staticResource)無法找到。百思不得其解,百度了一下才意識到時資源定義順序的問題。
App.xaml定義如下:
<Application x:Class="WpfApp2.App" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:local="clr-namespace:WpfApp2" StartupUri="FrmMain.xaml" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" d1p1:Ignorable="d" xmlns:d1p1="http://schemas.openxmlformats.org/markup-compatibility/2006"> <Application.Resources> <ResourceDictionary> <vm:ViewModelLocator x:Key="Locator" d:IsDataSource="True" xmlns:vm="clr-namespace:WpfApp2.ViewModel" /> <LinearGradientBrush x:Key="MainBrush" EndPoint="1,1" StartPoint="0,0"> <GradientStop Color="#242424" Offset="0"/> <GradientStop Color="#101010" Offset="1"/> </LinearGradientBrush> <ResourceDictionary.MergedDictionaries> <ResourceDictionary Source="/WpfApp2;component/Dictionary/Templete.xaml"/> <ResourceDictionary Source="/WpfApp2;component/Dictionary/Style.xaml"/> </ResourceDictionary.MergedDictionaries> </ResourceDictionary> </Application.Resources> </Application>
如上所示,定義了兩個資源字典:Templete.xaml和Style.xaml。發生錯誤的原因是Templete.xaml 用到了Style.xaml中定義的樣式,但是Style.xaml又是放在Templete後定義的,所以引發了異常。解決方法就是把兩個
資源字典文件定義的順序換一下。
總結:1.先定義的資源使用後定義的資源會引發異常。
2.一般畫刷、顏色、定義的本地類等最好放在資源文件的最前面,如本例定義的MainBrush漸變畫刷,如果在使用它的資源文件之後定義,也會引發標題所示的異常。