使用GeometryDrawing WPF创建按钮
嗨,我正在尝试创建一个带有半圆弧形状的按钮,如下所示: 我使用的是xaml和控件模板,它工作得很好,但是,按钮接收到单击事件,即使我通过几何体在矩形形状中单击任何部分,它也会启动单击事件,我希望事件仅在几何体中捕获。。。 这是xaml使用GeometryDrawing WPF创建按钮,wpf,Wpf,嗨,我正在尝试创建一个带有半圆弧形状的按钮,如下所示: 我使用的是xaml和控件模板,它工作得很好,但是,按钮接收到单击事件,即使我通过几何体在矩形形状中单击任何部分,它也会启动单击事件,我希望事件仅在几何体中捕获。。。 这是xaml <ControlTemplate x:Key="ButtonTemplate" TargetType="{x:Type Button}"> <Grid> <Image> <Image
<ControlTemplate x:Key="ButtonTemplate" TargetType="{x:Type Button}">
<Grid>
<Image>
<Image.Source>
<DrawingImage>
<DrawingImage.Drawing>
<GeometryDrawing x:Name="X"Geometry= "M 0,0
A .8,.8 180 1 1 0,4
L 0,3
A .6,.6 180 1 0 0,1
L 0,0">
<GeometryDrawing.Pen>
<Pen Brush="Black" Thickness=".1" />
</GeometryDrawing.Pen>
<GeometryDrawing.Brush>
<LinearGradientBrush StartPoint="0,0" EndPoint="0,1">
<GradientStop Offset="0" Color="Blue"/>
<GradientStop Offset="1" Color="Red"/>
</LinearGradientBrush>
</GeometryDrawing.Brush>
</GeometryDrawing>
</DrawingImage.Drawing>
</DrawingImage>
</Image.Source>
</Image>
<Viewbox>
<ContentControl Margin="20" Content="{TemplateBinding Content}"/>
</Viewbox>
</Grid>
</ControlTemplate>
...
<Button Template="{StaticResource ButtonTemplate}" Click="Button_Click" HorizontalAlignment="Right">OK</Button>
...
好啊
感谢您的评论,您可以在几何体数据中使用路径元素,而不是使用具有矩形边界(用于命中测试)的图像。路径将仅在轮廓定义的区域上执行命中测试。除非您在ContentPresenter上设置了IshitteVisible=“false”,否则设置的任何文本或其他内容也将可单击
<Button Content="OK">
<Button.Template>
<ControlTemplate TargetType="{x:Type Button}">
<Grid>
<Path Data="M 0,0
A .8,.8 180 1 1 0,4
L 0,3
A .6,.6 180 1 0 0,1
L 0,0" Stroke="Black" StrokeThickness="1" Stretch="Uniform">
<Path.Fill>
<LinearGradientBrush StartPoint="0,0" EndPoint="0,1">
<GradientStop Offset="0" Color="Blue"/>
<GradientStop Offset="1" Color="Red"/>
</LinearGradientBrush>
</Path.Fill>
</Path>
<Viewbox>
<ContentPresenter Margin="20" />
</Viewbox>
</Grid>
</ControlTemplate>
</Button.Template>
</Button>
指向图像的链接已断开。