C# MAUI 验证码倒计时 禁用 计时器

在这里插入图片描述
最近在写发送手机号,获取验证码的时候需要禁用掉避免重复发送
但是Maui的案例比较少只能自己琢磨
首先是ClockPage.xaml 代码

<ContentPage xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             xmlns:local="clr-namespace:XamlSamples;assembly=XamlSamples"
             x:Class="XamlSamples.ClockPage"
             Title="Clock Page">
    <VerticalStackLayout 
            Spacing="25"
            Padding="30,0"
            VerticalOptions="Center">
        <Button Text="{Binding DateTime}"
             BackgroundColor="#c9cdd4"
            CornerRadius="15"
            Clicked="Obtain"
            IsEnabled="{Binding eee}"
            x:Name="Verification"
                    />
    </VerticalStackLayout>
</ContentPage>

ClockPage.xaml.cs

 public partial class ClockPage : ContentPage
    {
        public ClockPage()
        {
            InitializeComponent();
            BindingContext = new
            {
                DateTime = "获取验证码",
                eee=true, 
            };
           
        }
        public void Obtain(object sender, EventArgs e)
        {
            BindingContext = new ClockViewModel();

        }
        
    }
}

ClockViewModel.cs

public class ClockViewModel : INotifyPropertyChanged
    {
        string _dateTime;
        Timer _timer;
        public event PropertyChangedEventHandler PropertyChanged;
        public string DateTime
        {
            get => _dateTime;
            set
            {
                if (_dateTime != value)
                {
                    _dateTime = value;
                    OnPropertyChanged();
                }
            }
        }
        bool _eee;
        public bool eee {
            get => _eee;
            set
            {
                if (_eee != value)
                {
                    _eee = value;
                    OnPropertyChanged();
                }
            }
        }
        int scss = 6;
        public ClockViewModel()
        {  
            this.DateTime =   scss + "秒";
            this.eee = false;
            _timer = new Timer(new TimerCallback((s) => this.DateTime = timer1_Tick()), null, TimeSpan.Zero, TimeSpan.FromSeconds(1));

        }
        public  string timer1_Tick()
        {
            scss--;
            if (scss == 0)
            {   scss =0;  
                _timer.Dispose();//使用Dispose()方法可停止(销毁)定时器,使回调不再被执行
                this.DateTime = "获取验证码";
                this.eee = true;
                return this.DateTime;
            }
            this.DateTime =scss.ToString() + "秒";

            return this.DateTime;
        }
       ~ClockViewModel() => _timer.Dispose();

        public void OnPropertyChanged([CallerMemberName] string name = "") => PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(name));
    }
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值