当前位置: 代码迷 >> C# >> WPF,这个资源为什么找不到?解决思路
  详细解决方案

WPF,这个资源为什么找不到?解决思路

热度:94   发布时间:2016-05-05 04:00:43.0
WPF,这个资源为什么找不到?
一个应用程序资源:

<Application x:Class="WPF2.App"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             StartupUri="MainWindow.xaml">
    <Application.Resources>
        <SolidColorBrush x:Key="aaaa" Color="Red"/>
    </Application.Resources>
</Application>

一个自定义控件,在控件模板中引用上面那个资源:

<ResourceDictionary
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="clr-namespace:WPF2">
    <Style TargetType="{x:Type local:CustomControl2}">
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="{x:Type local:CustomControl2}">
                    <Border Background="{StaticResource aaaa}">
                    </Border>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>
</ResourceDictionary>

主窗体:

<Window x:Class="WPF2.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:local="clr-namespace:WPF2"
        Title="MainWindow" Height="350" Width="525">
    <Grid Background="{StaticResource aaaa}">
        <local:CustomControl2/><!--报错-->
    </Grid>
</Window>

结果为什么要报错呢:无法找到名为“aaaa”的资源。资源名称区分大小写。

哪位大侠能知道是什么原因呢?

------解决思路----------------------
名字有重复的?
------解决思路----------------------
StaticResource?静态资源只能定义在本地同一个xml里面,你这个不知道是什么定义法
------解决思路----------------------
去掉报错的那一行试试,排除一下
------解决思路----------------------
把aaaa放到你实际引用的这一层级xaml,而不要放在application里
------解决思路----------------------
是哪块报错,报错的信息是什么?用户空间报错还是主窗体报错?
------解决思路----------------------

<Window x:Class="WPF2.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:local="clr-namespace:WPF2"
        Title="MainWindow" Height="350" Width="525">
    <Grid >
        <local:CustomControl2/><!--报错-->
    </Grid>
</Window>


这样还包不报错
------解决思路----------------------
把你的 <SolidColorBrush x:Key="aaaa" Color="Red"/>  也 定义到  ResourceDictionary 中,
在,

<Application.Resources>
        <ResourceDictionary Source="资源名称.xaml"></ResourceDictionary>
    </Application.Resources>

------解决思路----------------------
DynamicResource
------解决思路----------------------
引用:
把你的 <SolidColorBrush x:Key="aaaa" Color="Red"/>  也 定义到  ResourceDictionary 中,
在,

<Application.Resources>
        <ResourceDictionary Source="资源名称.xaml"></ResourceDictionary>
    </Application.Resources>
个人认为这个解释是对的
------解决思路----------------------
我按照你的写法,做了实验,自定义控件那没有报错啊
------解决思路----------------------
在调试-异常里边把xamlparseexception关掉就行了,这个警告没啥意义。
------解决思路----------------------
  相关解决方案