@new_mysql

Как обойти рекурсию объединения словарей ResourceDictionary?

Как обойти рекурсию объединения словарей ResourceDictionary?
Мне необходимо ResourceDictionary разбить на несколько частей, но при этом должна присутствовать связь между словарями на подобии partial классов.

Т.е. из этого
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
    
    <Color x:Key="Color-01">#985587</Color>
    <Color x:Key="Color-02">#D9A9CC</Color>
    
    <!--#region Computed -->
    <SolidColorBrush x:Key="ColorBrush-01" Color="{DynamicResource Color-01}"/>
    <SolidColorBrush x:Key="ColorBrush-02" Color="{DynamicResource Color-02}"/>
    <!--#endregion-->
</ResourceDictionary>


Получить это (Ошибка при запуске, из за рекурсии подключения словарей)
<!--Base.xaml-->
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
    
    <Color x:Key="Color-01">#985587</Color>
    <Color x:Key="Color-02">#D9A9CC</Color>
    
    <ResourceDictionary.MergedDictionaries>
        <ResourceDictionary Source="Computed.xaml"/>
    </ResourceDictionary.MergedDictionaries>
</ResourceDictionary>

<!--Computed.xaml-->
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
    
    <ResourceDictionary.MergedDictionaries>
        <ResourceDictionary Source="Base.xaml"/>
    </ResourceDictionary.MergedDictionaries>
    
    <!--#region Computed -->
    <SolidColorBrush x:Key="ColorBrush-01" Color="{DynamicResource Color-01}"/>
    <SolidColorBrush x:Key="ColorBrush-02" Color="{DynamicResource Color-02}"/>
    <!--#endregion-->
</ResourceDictionary>

В дальнейшем планируется подключение лишь словаря Base.xaml. Так же если в Computed.xaml убрать MergedDictionaries, то все работает как надо. Но единственное при заполнении ресурсами словаря, нет подсказок ресурсов из Base.xaml, а они необходимы.

Пробовал воспользоваться 'mc:Ignorable', но по какой-то причине он не работает на словари.
<!--Computed.xaml-->
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
                    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"  
                    xmlns:p="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                    mc:Ignorable="p" >
    
    <p:ResourceDictionary.MergedDictionaries>
        <p:ResourceDictionary Source="Base.xaml"/>
    </p:ResourceDictionary.MergedDictionaries>
    
    <!--#region Computed -->
    <SolidColorBrush x:Key="ColorBrush-01" Color="{DynamicResource Color-01}"/>
    <SolidColorBrush x:Key="ColorBrush-02" Color="{DynamicResource Color-02}"/>
    <!--#endregion-->
</ResourceDictionary>
  • Вопрос задан
  • 26 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы