Как установить значение DatePicker, равное вчера в xaml в xamarin.form? - PullRequest
0 голосов
/ 12 января 2019

Чтобы установить атрибут Date в xaml равным сегодня, мы можем использовать атрибут Today следующим образом:

xmlns:system="clr-namespace:System;assembly=mscorlib"

<DatePicker Date="{x:Static system:DateTime.Today}"/>

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

<DatePicker Date="{x:Static system:DateTime.Today.AddDays(-1)}"/> Не работает.

Так есть ли способ?

Ответы [ 2 ]

0 голосов
/ 12 января 2019

После некоторых обсуждений лучший ответ, который я нашел, - использовать помощника, подобного следующему:

В xaml:

xmlns:helpers="clr-namespace:Helpers"

<DatePicker Date="{x:Static helpers:DateTimeHelper.Yesterday}"/>

Пока помощник:

namespace Helpers
{
    public class DateTimeHelper {
        public static System.DateTime Yesterday
        {
            get { return System.DateTime.Today.AddDays(-1); }
        }
    }
}
0 голосов
/ 12 января 2019

Вы можете установить дату с контроллера.

<DatePicker x:Name="PostingDatePicker" />

PostingDatePicker.Date = DateTime.Today.AddDays(-1);

Другой способ - привязать дату из вашей ViewModel,

Xaml

<DatePicker x:Name="PostingDatePicker" Date="{Binding PostingDate}"/>

ViewModel

public DateTime PostingDate {get; set;}

PostingDate = DateTime.Today.AddDays(-1);

Обновленный ответ:

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

 <DatePicker x:Name="PostingDatePicker" Date="{Binding PostingDate, Converter={local:DateConverter}}"/>

создать класс, который наследует IValueConverter,

public class DateConverter : IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
    {
        try
        {
            return DateTime.Today.AddDays(-1);
        }
        catch (Exception)
        {
            return null;
        }
    }

    public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
    {
        throw new NotImplementedException();
    }
}

Во время выполнения ваша дата выбора будет обновлена ​​со вчерашней даты.

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