Мне кажется, что все, что вы хотите сделать, это установить свойства Foreground и Background для ресурсов, которые вы определили.
Вы пытались заменить код {Binding ...}
на {StaticResource ...}
?
Например, изменить
<Setter Property="Background" Value="{Binding BgUnselect}" />
до
<Setter Property="Background" Value="{StaticResource Normal_bg_Unselect}" />
РЕДАКТИРОВАТЬ ниже (на основе комментария)
Вы можете использовать стили для управления набором из 4 цветов для каждого типа кнопок. Я создал небольшой надуманный пример, который вы могли бы применить к своему коду. Если не понятно, попробую переписать для вашего примера кода.
Создать базовый стиль:
<Style x:Key="LabelStyleBase" TargetType="{x:Type Label}">
<Setter Property="Foreground" Value="{DynamicResource ForegroundBrush}"/>
<Setter Property="Background" Value="{DynamicResource BackgroundBrush}"/>
<!-- more style settings -->
</Style>
Затем создайте свои варианты:
<Style x:Key="LabelStyle1" BasedOn="{StaticResource LabelStyleBase}" TargetType="{x:Type Label}">
<Style.Resources>
<SolidColorBrush x:Key="ForegroundBrush" Color="Purple" />
<SolidColorBrush x:Key="BackgroundBrush" Color="Pink" />
</Style.Resources>
</Style>
<Style x:Key="LabelStyle2" BasedOn="{StaticResource LabelStyleBase}" TargetType="{x:Type Label}">
<Style.Resources>
<SolidColorBrush x:Key="ForegroundBrush" Color="Aqua" />
<SolidColorBrush x:Key="BackgroundBrush" Color="Yellow" />
</Style.Resources>
</Style>
Вы можете получить предупреждение, что ресурсы не могут быть найдены, но это должно быть хорошо.
Альтернативный раствор
Наконец, если вы не хотите идти по этому пути, вам, возможно, придется реализовать INotifyPropertyChanged в классе и переписать ваши установщики в свойствах кисти, чтобы запустить событие NotifyPropertyChanged.
Немного неясно, как именно вы реализуете пользовательский элемент управления Button, но вы, вероятно, должны иметь перечисление типа кнопки, выставленное как DependencyProperty, и менять цветовые кисти в уведомлении об изменении DependencyProperty.
Надеюсь, это поможет.