I created a WPF custom control, which works fine.
It has a style which sets some properties and a template.
Now i want to change the control, so it has a ‘Active’ property.
If this is true it should use the Property ‘ActiveBrush’ for the Stroke
of some Rectangles in the Template, else it should use ‘InactiveBrush’.
I want to use the ActiveBrush as the default Stroke, and change it to InactiveBrush
with a Trigger.
This works fine with one Rectangle when i use this:
<Trigger Property="Active" Value="False">
<Setter TargetName="Rec1" Property="Stroke" Value="{Binding Path=InactiveBrush, RelativeSource={RelativeSource TemplatedParent}}"/>
</Trigger>
But since I don’t want to set each rectangle with a seperated setter, I am asking myself if it shouldn’t be possible to set the property of all Rectangles in the Template with one Setter.
I already tried:
<Trigger Property="Active" Value="False">
<Setter Property="Rectangle.Stroke" Value="{Binding Path=InactiveBrush, RelativeSource={RelativeSource TemplatedParent}}"/>
</Trigger>
But this didn’t work.
Has anyone a suggestion, how to implement this?
Thanks in advance.
@Robert Rossney – this style will not run since a target type of Rectangle doesn’t have a property Active. But that is the right path to go, with a minor change:
This style should be nested in Style.Resources of the control style or in ControlTemplate.Resources of the ControlTemplate for the control. This way you’re localizing this style only to your control. Any Rectangle outside of your control will not be affected.