У меня 9 кнопок, которые Polygon
внутри Canva
.Каждая кнопка является «направлением».
Мне нужно иметь специальный цвет Fill
, когда они «выделены» (когда я нажимаю на одно направление, оно устанавливает свойство в ViewModel.
Я могу легко сделать это следующим образом:
<Button Command="{Binding SelectNewOrientationCommand}" CommandParameter="{x:Static local:OrientationEditorDirection.Top}" >
<Button.Template>
<ControlTemplate>
<Polygon Points="4,0 8,0 8,6 12,6 12,24 0,24 0,6 4,6" RenderTransformOrigin="0.5,1.75" >
<Polygon.Resources>
<Style TargetType="Polygon">
<Setter Property="Fill" Value="Blue" />
<Style.Triggers>
<DataTrigger Binding="{Binding SelectedDirection, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type UserControl}}}"
Value="{x:Static local:OrientationEditorDirection.Top}" />
</Style.Triggers>
</Style>
</Polygon.Resources>
<Polygon.RenderTransform>
<TransformGroup>
<TranslateTransform X="40" Y="4"/>
</TransformGroup>
</Polygon.RenderTransform>
</Polygon>
</ControlTemplate>
</Button.Template>
</Button>
Это работает, но это означает, что я должен скопировать этот стиль 9 раз и выполнить обслуживание 9 раз.
Я не могу поместить это «как есть» в Canva Resource, потому что я должен быть в состоянии указать индивидуально для каждой кнопки, для каких значений она вызывает конкретное значение.
Есть ли способ указать, что мойКнопка предназначена для значения Top
, когда я объявляю кнопку, а затем в стиле, чтобы найти это «верхнее» значение в моем DataTrigger?
Спасибо!