Большинство стилей WPF, которые я видел, разбиты на один очень длинный файл Theme.xaml. Я хочу разделить мой для удобства чтения, поэтому мой Theme.xaml выглядит так:
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="/PresentationFramework.Aero;v3.0.0.0;31bf3856ad364e35;component/themes/aero.normalcolor.xaml"/>
<ResourceDictionary Source="Controls/Brushes.xaml"/>
<ResourceDictionary Source="Controls/Buttons.xaml"/>
...
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
Проблема в том, что это решение не работает. У меня есть стиль кнопки по умолчанию, который основан на стиле Aero по умолчанию для кнопки:
<Style x:Key="{x:Type Button}" TargetType="{x:Type Button}" BasedOn="{StaticResource {x:Type Button}}">
<Setter Property="FontSize" Value="14"/>
...
</Style>
Если я помещаю все это в один файл, он работает, но как только я делю его, я получаю исключения StackOverflow, потому что он думает, что это сам BasedOn. Это можно обойти? Как WPF добавляет ресурсы при объединении словарей ресурсов?