可调整大小的圆形按钮

本文关键字:按钮 可调整 | 更新日期: 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的用户控件时非常有用。谢谢你的回答!