EventHandler <DateSetEventArgs>callBack, DatePickerDialog - PullRequest
0 голосов
/ 20 апреля 2020

Я пишу Android средство визуализации для пользовательского crontrol форм Xamarin Forms (CustomDatePicker). Я нашел образец кода, который делает работу. Однако есть несколько строк кода, которые я не понимаю. Я имею в виду первый параметр конструктора DatePickerDialog, который является функцией обратного вызова. Может кто-нибудь объяснить, что это на самом деле делает, а также, если мне действительно нужны все команды, например

view.Date = e.Date ?

Я уже устанавливаю дату, когда нажимается кнопка «Готово» ?? (этот код существует).

   [assembly: ExportRenderer(typeof(Common.Infrastructure.Controls.CustomDatePicker), typeof(CustomDatePickerRenderer))]
namespace Employer.Droid
{
   public class CustomDatePickerRenderer : ViewRenderer<CustomDatePicker, EditText>
   {
     public CustomDatePickerRenderer(Context context) : base(context)
     {

     }

     ///more logic

    void CreateDatePickerDialog(int year, int month, int day)

        {

            CustomDatePicker view = Element;

            _dialog = new DatePickerDialog(Context, **(o, e) =>

            {

                view.Date = e.Date;

                ((IElementController)view).SetValueFromRenderer(VisualElement.IsFocusedProperty, false);

                Control.ClearFocus();

                _dialog = null;**

            }, year, month, day);



            _dialog.SetButton("Done", (sender, e) =>

            {

                SetDate(_dialog.DatePicker.DateTime);


            });

            _dialog.DatePicker.MinDate = (long)(DateTime.Now.Date - new DateTime(1970, 1, 1)).TotalMilliseconds;

        }

1 Ответ

1 голос
/ 20 апреля 2020

EventHandler<DateSetEventArgs> callBack - это метод, который будет выполняться при установке новой даты DatePicker.

В вашем случае вы будете использовать этот метод для отправки значения из вашего CustomRenderer в CustomDatePicker в вашем общем проекте.

Я вижу, вы также устанавливаете значение, когда пользователь нажимает кнопку "Готово", поэтому, если вы не хотите передавать значение действия в EventHandler<DateSetEventArgs> callBack, вы может отправить пустой, что-то вроде:

_dialog = new DatePickerDialog(Context, (o, e) => { }, year, month, day);

Просто убедитесь, что при методе SetDate вы делаете все необходимые шаги, чтобы выбранная дата была правильно установлена ​​в Element.

Надеюсь, это поможет .-

...