可调整大小的圆形按钮 xaml
Resizable circle button xaml
我正在 XAML/C# 中为 Windows 开发一个通用应用程序,但我无法创建一个可以调整大小的圆形按钮。我使用一个具有均匀拉伸的 Ellipse 使其成为圆形,并使用一个 ContentPresenter。
<ControlTemplate TargetType="Button">
<Grid>
<Ellipse Stretch="Uniform">
<ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center"/>
</Grid>
</ControlTemplate>
问题是一个均匀的椭圆会自动左上对齐,而且不可能拉伸网格。当我调整按钮大小时,ContentPresenter 停留在中心,而椭圆停留在左上角。我希望能够调整按钮的大小并且文本保持在圆圈的中心。
感谢您的帮助!
您可以使用带有圆形 EllipseGeometry 的路径:
<ControlTemplate TargetType="Button">
<Grid>
<Path Stretch="Uniform" ...>
<Path.Data>
<EllipseGeometry RadiusX="1" RadiusY="1"/>
</Path.Data>
</Path>
<ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center"/>
</Grid>
</ControlTemplate>
然而,您必须明确设置按钮的宽度或高度,否则它将占用所有可用的 space。
我还找到了另一种解决方案,即使用 ViewBox:
<ControlTemplate TargetType="Button">
<ViewBox>
<Grid>
<Ellipse Stretch="Uniform" Width="50" Height="50">
<ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center"/>
</Grid>
</ViewBox>
</ControlTemplate>
ViewBox 在调整大小时会自动缩放所有内容。您必须设置宽度和高度,但这只是为了设置比例。将用户控件与 Windows 和 Windows Phone 一起使用时非常有用。
感谢您的回答!
我正在 XAML/C# 中为 Windows 开发一个通用应用程序,但我无法创建一个可以调整大小的圆形按钮。我使用一个具有均匀拉伸的 Ellipse 使其成为圆形,并使用一个 ContentPresenter。
<ControlTemplate TargetType="Button">
<Grid>
<Ellipse Stretch="Uniform">
<ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center"/>
</Grid>
</ControlTemplate>
问题是一个均匀的椭圆会自动左上对齐,而且不可能拉伸网格。当我调整按钮大小时,ContentPresenter 停留在中心,而椭圆停留在左上角。我希望能够调整按钮的大小并且文本保持在圆圈的中心。 感谢您的帮助!
您可以使用带有圆形 EllipseGeometry 的路径:
<ControlTemplate TargetType="Button">
<Grid>
<Path Stretch="Uniform" ...>
<Path.Data>
<EllipseGeometry RadiusX="1" RadiusY="1"/>
</Path.Data>
</Path>
<ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center"/>
</Grid>
</ControlTemplate>
然而,您必须明确设置按钮的宽度或高度,否则它将占用所有可用的 space。
我还找到了另一种解决方案,即使用 ViewBox:
<ControlTemplate TargetType="Button">
<ViewBox>
<Grid>
<Ellipse Stretch="Uniform" Width="50" Height="50">
<ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center"/>
</Grid>
</ViewBox>
</ControlTemplate>
ViewBox 在调整大小时会自动缩放所有内容。您必须设置宽度和高度,但这只是为了设置比例。将用户控件与 Windows 和 Windows Phone 一起使用时非常有用。 感谢您的回答!