Wpf объединенный словарь ресурсов не распознается из app.xaml

У меня есть приложение WPF .net 4.5, где у меня возникают проблемы при объединении словарей ресурсов.

У меня точно такая же проблема, какЭто ТАК вопрос а такжеЭтот вопрос но принятое решение не работает для меня.

У меня есть словари ресурсов, объявленные в моем app.xaml следующим образом (упрощено для ясности):

<Application.Resources>
        <ResourceDictionary.MergedDictionaries>
            <ResourceDictionary Source="Skin/ResourceLibrary.xaml" />              
            <ResourceDictionary Source="Skin/Brushes/ColorStyles.xaml" />               
        </ResourceDictionary.MergedDictionaries>
    </ResourceDictionary>               
</Application.Resources>

Проблема: Приложение может «СМОТРЕТЬ» из справочника ColorStyles, когда оно указано в app.xaml, но если я переместлю / вложу его в ResourceLibrary.xaml, то приложение ColorStyles.xaml не «увидит» приложение, и появятся ошибки, связанные с отсутствующими статическими ресурсами.

Вот как я создаю словарь ResourceLibrary.xaml (упрощенно):

<ResourceDictionary 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">

    <ResourceDictionary.MergedDictionaries>

        <!--  BRUSHES AND COLORS  -->
        <ResourceDictionary Source="Brushes/ColorStyles.xaml" />

    </ResourceDictionary.MergedDictionaries>
</ResourceDictionary>

Причина изменения: Моя текущая организация моих словарей ресурсов ужасна, и мне нужно ее изменить (так как я создаю объекты более одного раза). Я хотел иметь один словарь ресурсов в папке «Skin», а затем подпапки для организации оставшихся словарей стилей, которые будут объединены в файле ResourceLibrary.xaml, который, в свою очередь, будет вызываться в app.xaml.

Что я пробовал: Да, я пытался использовать решение по ссылке выше:

<Application.Resources>
    <ResourceDictionary>
        <ResourceDictionary.MergedDictionaries>
            <ResourceDictionary Source="Skin/ResourceLibrary.xaml"/>
        </ResourceDictionary.MergedDictionaries>
        <!-- Dummy Style, anything you won't use goes -->
        <Style TargetType="{x:Type Rectangle}" />
    </ResourceDictionary>
</Application.Resources>

но я получаю следующую ошибку в фиктивной строке стиля:

Ошибка 2 Элементы свойства не могут быть в середине содержимого элемента. Они должны быть до или после содержания.

Изменение кода на следующий избавило от ошибки выше, благодаря комментарию lisp:

<Application.Resources>
    <ResourceDictionary>
        <!--Global View Model Locator-->
        <vm:ViewModelLocator x:Key="Locator" d:IsDataSource="True" />

        <!-- Dummy Style, anything you won't use goes -->
        <Style TargetType="{x:Type Rectangle}" />

        <ResourceDictionary.MergedDictionaries>
            <ResourceDictionary Source="Skin/ResourceLibrary.xaml"></ResourceDictionary>             
            <ResourceDictionary Source="Skin/Brushes/ColorStyles.xaml" />
            <ResourceDictionary Source="Skin/NamedStyles/AlertStyles.xaml" />

        </ResourceDictionary.MergedDictionaries>
    </ResourceDictionary>               
</Application.Resources>

но библиотека ресурсов до сих пор не вызывается.

Я также попытался изменить все пути к файлам, чтобы упаковать URI, но это также не решило проблему.

Я попытался переместить resourceLibrary.xaml и другие словари ресурсов в другой проект библиотеки классов (используя ту же структуру папок и файлы, что и выше). Затем я использовал следующий URI, но по-прежнему не могу получить доступ к ресурсам, объявленным в файле ResourceLibrary.xaml.

<ResourceDictionary Source="pack://application:,,,/FTC.Style;component/ResourceLibrary.xaml" />

Но опять же, если я добавлю каждый словарь ресурсов в файл App.Xaml, используя вышеупомянутый формат UIR, ресурсы пригодны для использования.

Ошибка исчезла, но я все еще не могу использовать ресурсы, которые являются частью объединенного словаря в файле ResourceLibrary.xaml. Я склонен согласиться с комментарием dowhile для того, должен ли я использовать этот подход, но я хочу выяснить это, потому что наиболее распространенное решение этой проблемы (см. Ссылки в верхней части этого поста) не работает и, возможно, это решение может помочь кому-то еще.

Вопрос: Почему файл ResourceLibrary.xaml игнорируется?

Ответы на вопрос(3)

Ваш ответ на вопрос