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
相关产品推荐
相关产品推荐

