You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MAUI中XAML VisualState异常:按钮释放后无法恢复原缩放比例

MAUI按钮视觉状态缩放无法恢复问题

问题说明

学习MAUI与XAML时,实现按钮视觉状态遇到异常:点击并按住鼠标按钮,按钮缩放比例从1.0变为0.8,但释放鼠标后,缩放比例无法恢复至1.0。该问题在Windows和Android平台均会出现,使用Visual Studio 2022社区版开发。

已尝试以下方案但均无效:

  • 直接使用官方示例代码
  • 移除空的PointerOver视觉状态
  • 为PointerOver状态设置Scale=1
  • 重启Visual Studio、清理并重建解决方案
  • 搜索相关问题未找到有效解决办法

代码示例

XAML代码

<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             x:Class="ControlGallery.Views.XAML.ButtonVisualStatePageXAML"
             Title="Button Visual State">
    
    <!-- 官方示例代码,无法正常工作 -->
    <VerticalStackLayout>
        <Label Text="Button Visual State Using XAML"
               FontSize="40"
               FontAttributes="Bold"
               HorizontalOptions="Center" />
        <Button Text="Click me!"
                HorizontalOptions="Center">
            <VisualStateManager.VisualStateGroups>
                <VisualStateGroup x:Name="CommonStates">
                    <VisualState x:Name="Normal">
                        <VisualState.Setters>
                            <Setter Property="Scale"
                                    Value="1" />
                        </VisualState.Setters>
                    </VisualState>
                    <VisualState x:Name="Pressed">
                        <VisualState.Setters>
                            <Setter Property="Scale"
                                    Value="0.8" />
                        </VisualState.Setters>
                    </VisualState>
                    <VisualState x:Name="PointerOver" />
                </VisualStateGroup>
            </VisualStateManager.VisualStateGroups>
        </Button>
    </VerticalStackLayout>

    <!-- AI第一次建议方案,无效 -->
    <!--<VerticalStackLayout>
        <Label Text="Button Visual State Using XAML"
               FontSize="40"
               FontAttributes="Bold"
               HorizontalOptions="Center" />
        <Button Text="Click me!"
                HorizontalOptions="Center">
            <VisualStateManager.VisualStateGroups>
                <VisualStateGroup x:Name="CommonStates">
                    <VisualState x:Name="Normal">
                        <VisualState.Setters>
                            <Setter Property="Scale"
                                    Value="1" />
                        </VisualState.Setters>
                    </VisualState>
                    <VisualState x:Name="Pressed">
                        <VisualState.Setters>
                            <Setter Property="Scale"
                                    Value="0.8" />
                        </VisualState.Setters>
                    </VisualState>
                </VisualStateGroup>
            </VisualStateManager.VisualStateGroups>
        </Button>
    </VerticalStackLayout>-->

    <!-- AI第二次建议方案,无效 -->
    <!--<VerticalStackLayout>
        <Label Text="Button Visual State Using XAML"
               FontSize="40"
               FontAttributes="Bold"
               HorizontalOptions="Center" />

        <Button Text="Click me!"
                HorizontalOptions="Center">
            <VisualStateManager.VisualStateGroups>
                <VisualStateGroup x:Name="CommonStates">
                    <VisualState x:Name="Normal">
                        <VisualState.Setters>
                            <Setter Property="Scale"
                            Value="1" />
                        </VisualState.Setters>
                    </VisualState>
                    <VisualState x:Name="Pressed">
                        <VisualState.Setters>
                            <Setter Property="Scale"
                            Value="0.8" />
                        </VisualState.Setters>
                    </VisualState>
                    <VisualState x:Name="PointerOver">
                        <VisualState.Setters>
                            <Setter Property="Scale"
                                    Value="1" />
                        </VisualState.Setters>
                    </VisualState>
                </VisualStateGroup>
            </VisualStateManager.VisualStateGroups>
        </Button>
    </VerticalStackLayout>-->
</ContentPage>

C#后台代码

namespace ControlGallery.Views.XAML;

public partial class ButtonVisualStatePageXAML : ContentPage
{
    public ButtonVisualStatePageXAML()
    {
        InitializeComponent();
    }
}

内容的提问来源于stack exchange,提问作者MikeH

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.18 00:14:51