当前位置: 移动技术网 > IT编程>开发语言>.net > WPF 提示“在“System.Windows.Markup.StaticResourceHolder”上提供值时引发了异常”解决办法

WPF 提示“在“System.Windows.Markup.StaticResourceHolder”上提供值时引发了异常”解决办法

2018年03月28日  | 移动技术网IT编程  | 我要评论

生化医生在都市,say yeah,缘比昙花

    写程序时一直报题中所示的错误,提示定义的某个静态资源(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渐变画刷,如果在使用它的资源文件之后定义,也会引发标题所示的异常。

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网