簡體   English   中英

如何在 Xamarin.Forms 的日期選擇器中隱藏“取消”按鈕

[英]How to hide Cancel button in date picker in Xamarin.Forms

我遇到日期選擇器不應該彈出取消選項的情況。 背后的原因是,用戶必須從日期選擇器中獲取 select 所需的日期。 這里的日期選擇器默認采用今天的日期,因此當用戶打開日期選擇器並單擊Ok時,不會觸發Date selected事件。 如果我使用Unfocuss事件,即使用戶也單擊取消,它也會觸發。 所以,我在想的是隱藏取消按鈕,因為 xamarin.forms 中的日期選擇器沒有任何直接的CancelOk事件。 有人可以幫我解決這個問題。

您可以使用 CustomRenderer 來實現此效果,找到Cancel按鈕,然后將其Visibility屬性設置為Gone 。如下所示:

[assembly: ExportRenderer(typeof(Xamarin.Forms.DatePicker), typeof(MyDatePicker))]
namespace YourNamepace.Droid
{
   class MyDatePicker:DatePickerRenderer, IOnDateSetListener
   {

      private DatePickerDialog datePickerDialog;
      private Context context;
      private DateTime currently;

      public MyDatePicker(Context context) : base(context)
      {
        this.context = context;
      }


      protected override void OnElementChanged(ElementChangedEventArgs<Xamarin.Forms.DatePicker> e)
      {
        base.OnElementChanged(e);
        currently = DateTime.Now;
        this.Control.Click += Control_Click;

      }

      private void Control_Click(object sender, EventArgs e)
      {

        datePickerDialog = new DatePickerDialog(context,this,currently.Year,currently.Month - 1, currently.Day);
        datePickerDialog.Show();
        Android.Widget.Button cancel = datePickerDialog.GetButton((int)DialogButtonType.Negative);
        cancel.Visibility = ViewStates.Gone;
      }

      public void OnDateSet(Android.Widget.DatePicker view, int year, int month, int dayOfMonth)
      {
        DateTime selectedDate = new DateTime(year, month + 1, dayOfMonth);
        currently = selectedDate;
        Control.Text = selectedDate.ToShortDateString();
      }

 }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM