为什么我在使用 MAUI 的 XAML 中的单选按钮在 android 上不可单击?

Why is my radio button in XAML using MAUI not clickable on android?

提问人:nawomack 提问时间:10/27/2023 更新时间:10/30/2023 访问量:54

问:

我有一个页面,要求用户在两个选项之间进行选择 - 我为它使用单选按钮,但对于格式,我需要制作一个自定义 ControlTemplate,以便该按钮看起来像我们所有的其他按钮。我使用的自定义模板如下:

    <ContentPage.Resources>
        <ControlTemplate x:Key="FrameRadioTemplate">
            <Frame Padding="0" BorderColor="#006A97" CornerRadius="1"       
               VerticalOptions="CenterAndExpand"
               HeightRequest="40" WidthRequest="80" HorizontalOptions="Start">

                <VisualStateManager.VisualStateGroups>
                    <VisualStateGroup x:Name="CheckedStates">
                        <VisualState x:Name="Checked">
                            <VisualState.Setters>
                                <Setter Property="BackgroundColor" Value="#008000"/>
                            </VisualState.Setters>
                        </VisualState>
                        <VisualState x:Name="Unchecked">
                            <VisualState.Setters>
                                <Setter Property="BackgroundColor" Value="#ffffff"/>
                            </VisualState.Setters>
                        </VisualState>
                    </VisualStateGroup>
                </VisualStateManager.VisualStateGroups>
                <Grid WidthRequest="70">
                    <ContentPresenter/>
                </Grid>
            </Frame>
        </ControlTemplate>
    </ContentPage.Resources>

在 Visual Studio 的 Windows Machine 中查看此内容时,它工作正常 - 我可以单击我的单选按钮,它们选择,一切正常。但是当我在Android上尝试时,突然间单选按钮无法点击 - 它们显示并显示我想要的方式,但是当我点击它们时什么也没发生。

我尝试过在谷歌上搜索类似的情况,但似乎找不到任何其他按钮功能在转到 Android 时停止的例子。不确定如何解决这个问题

C# .NET XAML 毛伊

评论

0赞 Stephen Quan 10/27/2023
我一直有类似的行为,这是由于拦截鼠标手势的控件堆叠。虽然这并不明显,但我必须设置我怀疑正在窃取鼠标输入的控件,之后,我的应用程序开始工作。也许同样的方法也适用于您。IsEnabled="False"
0赞 Liqun Shen-MSFT 11/2/2023
您好,您可以尝试使用 Border 而不是 Frame。请看我的回答。

答:

0赞 Liqun Shen-MSFT 10/30/2023 #1

这就是 Frame 的问题所在。

Frame 类存在于 Xamarin.Forms 中,并且存在于 .NET MAUI 中,供将其应用从 Xamarin.Forms 迁移到 .NET MAUI 的用户使用。如果要生成新的 .NET MAUI 应用,建议改用 Border。

我只是将 Frame 更改为 Border,它在我这边运行良好,

<Border Padding="0" Stroke="#006A97"
   VerticalOptions="CenterAndExpand"
   HeightRequest="40" WidthRequest="80" HorizontalOptions="Start">
    <Border.StrokeShape>
        <RoundRectangle CornerRadius="1"/>
    </Border.StrokeShape>
    <VisualStateManager.VisualStateGroups>
        ...

    </VisualStateManager.VisualStateGroups>
    <Grid WidthRequest="70">
        <ContentPresenter/>
    </Grid>
</Border>

希望对您有所帮助!