'Provide value on 'System.Windows.StaticResourceExtension' threw an exception.'

产生这个错误的原因是,StaticResource必须先定义再引用,但是DynamicResource就没有这个限制,为避免这个错误出现,可将StaticResource的定义放在Window.xaml的最前端,或者放在App.xaml中,例如:

 

复制代码
复制代码
Window ...>  
  <Window.Resources>  
     <xxx x:Key="ExpenseDataSource" />  
     <DataTemplate x:Key="nameItemTemplate">  
        ....  
     </DataTemplate>  
</Window>  
<ListBox>  
   ...  
</ListBox>  
复制代码
复制代码

转自:http://blog.csdn.net/jane_sl/article/details/7389670

但我遇到的问题是一个子工程中的usercontrol报此种错,于是做了以下动作:

1.在主工程的App.xaml中加入了<ResourceDictionary Source="pack://application:,,,/Trisurf;component/Resources/DemoWindowStyles.xaml"/>

2.在子工程的usercontrol的.xaml中加入DataContext="{Binding Source={StaticResource Locator}, Path=***ViewModel}(DataContext不是导致错误的原因,此处只是记录我的修改过程)

  子工程的app.xaml中加入

复制代码
复制代码
<Application.Resources>
        <ResourceDictionary>
            <!--使用资源字典的合并资源功能-->
            <ResourceDictionary.MergedDictionaries>
                <!--在这里可以指定多个资源文件名-->
                <ResourceDictionary Source="Resource/DemoWindowStyles.xaml"/>
            </ResourceDictionary.MergedDictionaries>
            <vm:ViewModelLocator d3p1:Key="Locator" d:IsDataSource="True" 
                         xmlns:d3p1="http://schemas.microsoft.com/winfx/2006/xaml" 
                         xmlns:vm="clr-namespace:Trisurf.ViewModel" />
        </ResourceDictionary>     
  </Application.Resources>
复制代码
复制代码


OK,问题解决。试了一下,我出现此错误的原因是没有在主程序的App.xaml中加入Resource。

posted on   大西瓜3721  阅读(389)  评论(0编辑  收藏  举报

编辑推荐:
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)
历史上的今天:
2016-05-25 C#生成缩略图代码

导航

点击右上角即可分享
微信分享提示