可调整大小的圆形按钮
本文关键字:按钮 可调整 | 更新日期: 2023-09-27 18:09:31
我正在用XAML/c#开发一个通用的Windows应用程序,我无法创建一个可以调整大小的圆圈按钮。我使用一个均匀拉伸的椭圆,使它成为圆形和一个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>
你必须明确设置按钮的宽度或高度,否则它会占用所有可用空间。
我还发现了另一个解决方案,那就是使用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的用户控件时非常有用。谢谢你的回答!