Я получил его для работы, включив GeomteryDrawing
непосредственно в шаблон Button
и используя RelativeSource
привязки к свойствам Foreground
и Background
его предка Button
(которому я назначил по умолчанию в объявлении стиля):
<Style x:Key="HexagonButton" TargetType="{x:Type Button}">
<Setter Property="Background" Value="White" />
<Setter Property="Foreground" Value="Black" />
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type Button}">
<Grid>
<Image x:Name="hexImg">
<Image.Source>
<DrawingImage>
<DrawingImage.Drawing>
<DrawingGroup>
<GeometryDrawing Brush="{Binding RelativeSource={RelativeSource AncestorType={x:Type Button}}, Path=Background}" Geometry="M 250,0 L 750,0 L 1000,433 L 750,866 L 250,866 L 0,433 Z">
<GeometryDrawing.Pen>
<Pen Brush="{Binding RelativeSource={RelativeSource AncestorType={x:Type Button}}, Path=Foreground}" Thickness="10" LineJoin="Round" />
</GeometryDrawing.Pen>
</GeometryDrawing>
</DrawingGroup>
</DrawingImage.Drawing>
</DrawingImage>
</Image.Source>
</Image>
<ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center" />
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
Тогда по умолчанию черно-белая кнопка:
<Button Style="{StaticResource HexagonButton}">Click me</Button>
И пользовательская кнопка:
<Button Style="{StaticResource HexagonButton}" Background="Yellow" Foreground="Red">Click me</Button>