Xamarin.forms按钮Isenable失败

qjp7pelc  于 2023-04-27  发布在  其他
关注(0)|答案(1)|浏览(151)

我是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;
        }
e7arh2l6

e7arh2l61#

我能问一下怎么才能永久禁用这个按钮吗?
如果您想永久禁用该按钮,需要在设备中保存 * 一个自定义状态标志*,下次进入该视图时,该按钮将被这个***自定义状态标志*以编程方式禁用。
例如,我们可以使用
Xamarin.Essentials: Preferences**来sace自定义状态标志并覆盖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);
    }
}

然后它将工作,没有代码需要改变所需的页面。

相关问题