如何在xamarin.form中的xaml中将DatePicker值设置为昨天等于?

时间:2019-01-12 03:15:04

标签: xamarin datepicker

要将xaml中的Date属性设置为今天等于,我们可以使用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 :(得分:0)

您可以从控制器设置日期。

<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();
    }
}

在运行时,日期选择器的日期将更新为昨天的日期。

答案 1 :(得分:0)

经过一些讨论,我找到的最佳答案是使用如下帮助器:

在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); }
        }
    }
}