Настройте Xamarin.Forms.Datepicker для выбора и визуализации нескольких дат. - PullRequest
0 голосов
/ 15 февраля 2020

Я новичок во всем пользовательском интерфейсе wpf / xamarin и хочу запустить свое первое мобильное приложение. Итак, поскольку заголовок уже содержит топи c этого вопроса, я хотел бы использовать стандартный Xamarin.Forms Datepicker, чтобы позволить пользователю выбрать несколько дат.

Я думаю, это будет довольно легко отправить в событии для выбора даты и помещения ее в массив для выбранных дат.

Но как я могу визуализировать все выбранные даты в диалоге выбора даты? Есть ли возможность сделать это с помощью этого элемента управления?

Спасибо:)

Ответы [ 3 ]

1 голос
/ 17 февраля 2020

Один из способов отображения списка редактируемых дат переменной длины:

  • В вашем классе «модель представления» (или как вы используете BindingContext) ведите список дат как свойство, которое является ObservableCollection: ObservableCollection<DateTime> Dates { get; set; } = new ObservableCollection<DateTime>();
  • В вашем классе "view" (или "page") есть ListView (или более новый CollectionView) с шаблоном элемента, который включает DateView подборщика. И Source={Binding Dates}. См. https://docs.microsoft.com/en-us/xamarin/xamarin-forms/user-interface/datepicker для примера, который включает два средства выбора даты. За исключением того, что вместо явного помещения двух указателей даты в ваш xaml, вы поместите список с его шаблоном элемента.
  • У вас есть кнопка для добавления новой даты в список.
  • В шаблоне элемента есть кнопка справа от указателя даты. Используйте это, чтобы удалить эту дату из соответствующего свойства Dates.

Если существует ограничение на количество дат, которые вы хотите показать, вместо ListView, вы можете вручную добавьте максимальное количество сборщиков даты на ваш просмотр или страницу. Похоже на ссылку, которую я дал выше. Затем добавьте флажок рядом с каждым; используйте это, чтобы включить / отключить эту дату.

1 голос
/ 17 февраля 2020

По вашему требованию вы можете использовать Календарь. Плагин SfCalendar предоставляет MultiSelection SelectionMode для этого.

 <syncfusion:SfCalendar
            x:Name="calendar"
            SelectionChanged="calendar_SelectionChanged"
            SelectionMode="MultiSelection" />

enter image description here

Если вы хотите получить весь список выбранных дат, вы можете сделать это в событии calendar_SelectionChanged.

 private void calendar_SelectionChanged(object sender, Syncfusion.SfCalendar.XForms.SelectionChangedEventArgs e)
    {
        var dateAdded = e.DateAdded;
        var dateRemoved = e.DateRemoved;

        if (dateRemoved != null)
        {
            list = dateAdded.Except(dateRemoved).ToList();
        }
        else
        {
            list = dateAdded.ToList();
        }         

    }
1 голос
/ 15 февраля 2020

То есть вы хотите отобразить несколько дат, которые вы ранее выбрали? Я не думаю, что это возможно с помощью сборщика даты Xamarin. Средство выбора даты Xamarin содержит только одну дату за раз , как показано в документах . Вы можете сделать свой собственный DatePicker, но вы должны сделать это для каждой платформы. Я бы сделал так, чтобы обновлять другое свойство отображения каждый раз, когда вы выбираете дату с помощью средства выбора даты. Что-то вроде кликабельного ярлыка или чего-то подобного.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...