Я применил скиндинг в своем приложении. Приложение загружает свой ресурсный словарь Brushes.xaml, который использует цвета, которые находятся в словаре ресурсов, специфичном для скинов. Поэтому в зависимости от выбранного скина загружается только один Color.xaml.
Кожный цвет Color.xaml
<Color x:Key="TextBoxBackgroundColor">#C4AF8D</Color>
<Color x:Key="TextBoxForegroundColor">#6B4E2C</Color>
<Color x:Key="ToolBarButtonForegroundColor">#6B4E2C</Color>
Brushes.xaml:
<SolidColorBrush
x:Key="TextBoxBackground"
Color="{DynamicResource TextBoxBackgroundColor}" />
<SolidColorBrush
x:Key="TextBoxForeground"
Color="{DynamicResource TextBoxForegroundColor}" />
Как вы можете видеть, несколько цветов (TextBoxForegroundColor и ToolBarButtonForegroundColor) одинаковы. Я хотел бы обойти это, поскольку он становится все более запутанным, потому что используемые цвета не распознаются по их шестнадцатеричному значению. Теперь вы можете посоветовать объединить оба цвета в один, но у меня есть скины, где TextBoxForegroundColor отличается от ToolBarButtonForegroundColor.
Что бы я хотел сделать, это примерно так:
<Color x:Key="DarkBrown">#C4AF8D</Color>
<Color x:Key="TextBoxBackgroundColor" Color={StaticResource DarkBrown} />
<Color x:Key="ToolBarButtonForegroundColor" Color={StaticResource DarkBrown} />
Возможно ли это в Xaml? Я не нашел способ.