Использование свойства BasedOn со стилем, определенным в другом словаре


Приложение, над которым я работаю, имеет 2 ResourceDictionary, DefaultStyles.xaml и пользовательские стили.код XAML.

Возможно ли, что стиль в словаре CustomStyles использует базовый стиль, определенный в другом словаре?

DefaultStyles.xaml:

<Style x:Key="TextBlockDefaultStyle" TargetType="TextBlock">  
    <Setter Property="Margin" Value="4" />  
</Style>  

Обычаи.xaml:

<Style x:Key="SectionTitleStyle" TargetType="TextBlock" BasedOn="{StaticResource TextBlockDefaultStyle}">
    <Setter Property="FontSize" Value="16" />
</Style>

Приложение.xaml:

<Application.Resources>
    <ResourceDictionary>
        <ResourceDictionary.MergedDictionaries>
            <ResourceDictionary Source="Assets/Styles/DefaultStyles.xaml"/>
            <ResourceDictionary Source="Assets/Styles/CustomStyles.xaml"/>
        </ResourceDictionary.MergedDictionaries>
    </ResourceDictionary>
</Application.Resources>

При выполнении кода возникает следующее исключение:

Не удается найти ресурс с именем / ключом TextBlockDefaultStyle.

Он хорошо работает, если оба стиля находятся в одном файле.

1 4

1 ответ:

Вам нужно напрямую ссылаться на словарь с другим стилем.

Нестандартные стили.xaml:

<ResourceDictionary.MergedDictionaries>
    <ResourceDictionary Source="DefaultStyles.xaml" />
</ResourceDictionary.MergedDictionaries>

<Style x:Key="SectionTitleStyle" TargetType="TextBlock" BasedOn="{StaticResource TextBlockDefaultStyle}">
    <Setter Property="FontSize" Value="16" />
</Style>