异常:找不到名为"*"的资源。资源名称区分大小写



但是为什么。我认为文件的工作原理是正确的:

ifocus.xaml中的错误,但以前定义了转换器。我不忽视什么错。

参考:oghth.xaml是另一个项目的参考。我喜欢这个。

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
                xmlns:c="clr-namespace:Modern.Converters">
<SolidColorBrush x:Key="C_FocusBush" Color="Red"/>
<c:ThicknessConverter x:Key="ThicknessConverter"/>
<ResourceDictionary.MergedDictionaries>
    <ResourceDictionary Source="Interfaces/IFocus/IFocus.xaml"/>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>

ifocus.xaml

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
                xmlns:i="clr-namespace:Modern.Interfaces">
<Style TargetType="{x:Type i:IFocus}" x:Key="{x:Type i:IFocus}">
    <Setter Property="BorderBrush" Value="{DynamicResource C_FocusBush}"/>
    <Setter Property="BorderThickness" Value="2"/>
    <Setter Property="Padding" Value="2"/>
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="{x:Type i:IFocus}">
                <Grid Margin="{TemplateBinding Padding}">
                    <Border BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness, Converter={StaticResource ThicknessConverter}"/>
                </Grid>
            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>
</ResourceDictionary>

包括所有资源的主要应用程序:

<Application x:Class="*.App"
         xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
         StartupUri="MainWindow.xaml">
<Application.Resources>
    <ResourceDictionary>
        <ResourceDictionary.MergedDictionaries>
            <ResourceDictionary Source="pack://application:,,,/Modern;component/Modern.xaml"/>
        </ResourceDictionary.MergedDictionaries>
    </ResourceDictionary>
</Application.Resources>
</Application>

刷子可以正常工作,但转换器却不,为什么不呢?

我在将视觉工作室主题更改为Custom(Mine's OneMonokai(之后遇到了错误格式。我只是将其恢复为默认主题,令人惊讶地解决了。似乎远非问题,但是您可以如果需要的话,可以尝试此修复。

,因为它是 IFocus.xaml中的 Style,它引用了 Modern.xaml中的 Brush资源,它是 IFocus.xaml,它应该合并 Modern.xaml而不是相反:

Modern.xaml:

<ResourceDictionary ...>
    <SolidColorBrush x:Key="C_FocusBush" Color="Red"/>
</ResourceDictionary>

ifocus.xaml:

<ResourceDictionary ...>
    <Style ...>
        <Setter Property="BorderBrush" Value="{StaticResource C_FocusBush}"/>
    </Style>
    <ResourceDictionary.MergedDictionaries>
        <ResourceDictionary Source="../../Modern.xaml"/>
    </ResourceDictionary.MergedDictionaries>
</ResourceDictionary>

app.xaml:

<ResourceDictionary Source="pack://application:,,,/Modern;component/Interfaces/IFocus/IFocus.xaml"/>

另外,您可以使用所有刷子创建一个单独的资源词典,并将其与样式合并为App.xaml或其他资源。

您可能还想在这里查看我的答案,以获取有关加载资源词典的顺序的更多信息。

相关内容

  • 没有找到相关文章