Xamarin.forms 按钮启用失败

问题描述 投票:0回答:1

我是 Xamarin Forms 的新手,我正在设计一个问答游戏。我想让按钮在用户单击后被禁用,以防止用户再次选择它。我尝试使用 Isenable,但它不起作用。 如果我遗漏了一些代码,请指出。

XAML CODE
 <StackLayout>
        <StackLayout>
            <Button x:Name="C11" Text="$1" WidthRequest="50" HeightRequest="100"  Clicked="C11_Clicked" />
            <Button x:Name="C12" Text="$1" WidthRequest="50" HeightRequest="100"  Clicked="C12_Clicked"/>
        </StackLayout>
       

    </StackLayout>
C# code
 private void C11_Clicked(object sender, EventArgs e)
        {
            C11.IsEnabled = false;

            Navigation.PushModalAsync(new C11());
 
        }

更新部分

 private void continue_Clicked(object sender, EventArgs e)
    
        {
            MainPage m = new MainPage();
            m.C11btn.IsEnabled = false;
            Preferences.Set("ButtonEnableFlag", false);
            Navigation.PushModalAsync(new MainPage());
           
        }

        protected override void OnAppearing()
        {
            base.OnAppearing();
            var enableValue = Preferences.Get("ButtonEnableFlag", true);
            MainPage m = new MainPage();
           
            m.C11btn.IsEnabled = enableValue;
        }
c# xamarin button disable
1个回答
0
投票

请问如何永久禁用按钮?

如果你想让按钮永久禁用,你需要在设备中保存a 自定义状态标志。下次进入此视图时,此 自定义状态标志 将以编程方式禁用该按钮。

例如,我们可以使用Xamarin.Essentials: Preferences来设置自定义状态标志并覆盖

OnAppearing
方法,如下所示:

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

    private void Button_Clicked(object sender, EventArgs e)
    {
        MyButton.IsEnabled = false;
        Preferences.Set("ButtonEnableFlag", false);
    }

    protected override void OnAppearing()
    {
        base.OnAppearing();
        var enableValue = Preferences.Get("ButtonEnableFlag", true);
        MyButton.IsEnabled = enableValue;
    }
}

这里是这个页面的Xaml代码:

<ContentPage.Content>
    <StackLayout Padding="20">
        <Label Text="Welcome to PagePersonal!"
            VerticalOptions="CenterAndExpand" 
            HorizontalOptions="CenterAndExpand" />
        <Button x:Name="MyButton" Text="Disable" Clicked="Button_Clicked"/>
    </StackLayout>
</ContentPage.Content>

现在该按钮将永久禁用。

如果要在另一个页面禁用按钮,只需要在另一个页面设置自定义状态标志即可。稍后当您返回所需页面时,该按钮将被禁用。

另一页代码:

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

    private async void Button_Clicked(object sender, EventArgs e)
    {
        await Navigation.PushModalAsync(new PageThird());
    }

    private void Disable_Clicked(object sender, EventArgs e)
    {
        Preferences.Set("ButtonEnableFlag", false);
    }

    private void Enable_Clicked(object sender, EventArgs e)
    {
        Preferences.Set("ButtonEnableFlag", true);
    }
}

然后它就会工作,不需要在所需页面中更改代码。

© www.soinside.com 2019 - 2024. All rights reserved.