ResourceDictionary利用UserControl->无法解析UserControl中的资源

问题描述

我在App.xaml中将Resource定义为ResourceDictionary:

<Application.Resources>
        <ResourceDictionary>
            <ResourceDictionary.MergedDictionaries>
                <ResourceDictionary Source="pack://application:,/AssemblyName;component/Resources/HamburgerMenuStyles.xaml" />
                <!--…-->
            </ResourceDictionary.MergedDictionaries>
            <converters:LanguageConverter x:Key="LanguageConverter"/>
            <!--…-->
        </ResourceDictionary>
</Application.Resources>

然后,在上面代码中包含的ResourceDictionary“ HamburgerMenuStyles.xaml”中,我使用了UserControl:

<mah:HamburgerMenu.OptionsItemsSource>
    <mah:HamburgerMenuItemCollection>
        <mah:HamburgerMenuIconItem Label="{localization:Loc tabConf}">
            <mah:HamburgerMenuIconItem.Icon>
                <!--…-->
            </mah:HamburgerMenuIconItem.Icon>
            <mah:HamburgerMenuIconItem.Tag>
                <controls:Settings/> <!--Calling the UserControl here-->
            </mah:HamburgerMenuIconItem.Tag>
        </mah:HamburgerMenuIconItem>
    </mah:HamburgerMenuItemCollection>
</mah:HamburgerMenu.OptionsItemsSource>

我得到了一个错误,即使代码可以编译和运行,也无法解析UserControl中使用的资源(那里使用的资源也放置在App.xaml中)。怎么来的?我没有在UserControl.xaml中得到智能感知错误

示例: Visual Studio抱怨UserControl中使用了一个转换器,该转换器在App.xaml中定义为资源,并且在xaml控件中没有显示任何错误+可以正常工作。

解决方法

将“缺少的”资源添加到控件中,进行编译,然后再删除该资源,再次解决了我的问题:

<mah:HamburgerMenu.OptionsItemsSource>
    <mah:HamburgerMenuItemCollection>
        <mah:HamburgerMenuIconItem Label="{localization:Loc tabConf}">
            <mah:HamburgerMenuIconItem.Icon>
                <!--…-->
            </mah:HamburgerMenuIconItem.Icon>
           <mah:HamburgerMenuIconItem.Tag>
                <controls:Settings>
                    <controls:Settings.Resources>
                        <converters1:InvertBoolConverter x:Key="InvertedBoolConverter"/>
                    </controls:Settings.Resources>
                </controls:Settings>
            </mah:HamburgerMenuIconItem.Tag>
        </mah:HamburgerMenuIconItem>
    </mah:HamburgerMenuItemCollection>
</mah:HamburgerMenu.OptionsItemsSource>

这似乎是一个错误。没问题了:-)