无法在iOS的Xamarin DatePicker上获得时间价值

问题描述

我想同时使用日期和时间选择器。但是我无法从Xamarin DatePicker获取时间值,只是正确获取日期值即可。

我在下面分享代码

CustomDatePicker.cs

public class CustomDatePickerRenderer : DatePickerRenderer
{
    protected override void OnElementChanged(ElementChangedEventArgs<DatePicker> e)
    {
        base.OnElementChanged(e);
        if(Control != null)
        {
            UITextField entry = Control;
            UIDatePicker picker = (UIDatePicker)entry.InputView;
            picker.PreferredDatePickerStyle = UIDatePickerStyle.Wheels;
            picker.MinimumDate = Foundation.NSDate.Now;
            picker.MaximumDate = Foundation.NSDate.Now.AddSeconds(172799);
            picker.Mode = UIDatePickerMode.DateAndTime;
        }
    }
}

Xaml

<DatePicker x:Name="datePickerIOS"  DateSelected="datePickerIOS_DateSelected" ></DatePicker>

Xaml.cs

private void datePickerIOS_DateSelected(System.Object sender,Xamarin.Forms.DateChangedEventArgs e)
{
   var date = datePickerIOS.Date;
   // This date's time value always return  12:00:00 AM
}

enter image description here

解决方法

使用DateSelected="datePickerIOS_DateSelected"方法时,这是日期选择器的事件,您只能获得正确的日期。

您应该在customrenderer中获取正确的日期和时间,并将其返回到页面(可以使用MessagingCenter来实现)。

您可以参考此link