Чтобы изменить цвет границы флажка Wpf-Material, необходимо переопределить его ресурс следующим образом :
<Style TargetType="Checkbox" BasedOn="{StaticResource MaterialDesignCheckBox}">
<Style.Resources>
<SolidColorBrush x:Key="MaterialDesignCheckBoxOff" Color="Red" />
</Style.Resources>
</Style>
Это работает, и границы флажков становятся красными. С флажками материала это: <Setter Property="BorderBrush" Value="Red" />
не работает.
Проблема в том, что я пытаюсь применить это свойство границы динамически. Поэтому я создал пользовательский компонент для флажка, в который я добавил логический DependencyProperty с именем IsDirty. Если IsDirty == true и флажок IsChecked, то я меняю фон (это работает хорошо). Если IsDirty == true и флажок не IsChecked, я бы хотел изменить цвет границы (так как фон прозрачный) в этом случае. Я попробовал что-то, как указано ниже:
<Style TargetType="{x:Type local:CustomCheckbox}" x:Key="dirtyCustomCheckbox" BasedOn="{StaticResource MaterialDesignCheckBox}">
<Style.Resources>
<SolidColorBrush x:Key="MaterialDesignCheckBoxOff" Color="Red" />
</Style.Resources>
</Style>
<Style TargetType="{x:Type local:CustomCheckbox}" BasedOn="{StaticResource MaterialDesignCheckBox}">
<Style.Triggers>
<MultiDataTrigger>
<MultiDataTrigger.Conditions>
<Condition Binding="{Binding IsDirty, RelativeSource={RelativeSource Self}}" Value="True" />
<Condition Binding="{Binding IsChecked, RelativeSource={RelativeSource Self}}" Value="True" />
</MultiDataTrigger.Conditions>
<MultiDataTrigger.Setters>
<Setter Property="Background" Value="Red" />
</MultiDataTrigger.Setters>
</MultiDataTrigger>
<MultiDataTrigger>
<MultiDataTrigger.Conditions>
<Condition Binding="{Binding IsDirty, RelativeSource={RelativeSource Self}}" Value="True" />
<Condition Binding="{Binding IsChecked, RelativeSource={RelativeSource Self}}" Value="False" />
</MultiDataTrigger.Conditions>
<MultiDataTrigger.Setters>
<Setter Property="Style" Value="{StaticResource dirtyCustomCheckbox}" />
</MultiDataTrigger.Setters>
</MultiDataTrigger>
</Style.Triggers>
</Style>
Но я получаю следующее исключение: ArgumentException: объекту Style не разрешается влиять на свойство Style объекта, к которому он применяется.
Любая другая идея о том, как я могу этого добиться?