Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 时间选择器未在Xamarin表单中以12小时格式显示时间_C#_.net_Xamarin_Xamarin.forms - Fatal编程技术网

C# 时间选择器未在Xamarin表单中以12小时格式显示时间

C# 时间选择器未在Xamarin表单中以12小时格式显示时间,c#,.net,xamarin,xamarin.forms,C#,.net,Xamarin,Xamarin.forms,我有一个要求,即无论设备的时间格式如何,我都必须将所有时间选择器和选定的时间格式更改为12小时。 这个问题是针对Android的。它在iOS中运行良好。 我使用自定义的时间渲染器 以下是我正在做的: 在XAML中: <customElements:CustomTimePicker x:Name="TimePickerName" Time="{Binding time}"> <StackLayout> <StackLayout.GestureRecognize

我有一个要求,即无论设备的时间格式如何,我都必须将所有时间选择器和选定的时间格式更改为12小时。 这个问题是针对Android的。它在iOS中运行良好。 我使用自定义的时间渲染器

以下是我正在做的:

在XAML中:

<customElements:CustomTimePicker x:Name="TimePickerName" Time="{Binding time}">
<StackLayout>
    <StackLayout.GestureRecognizers>
        <TapGestureRecognizer Tapped="Handle_TimePickerTapped" />
    </StackLayout.GestureRecognizers>
</StackLayout>
<TimePicker.Format>hh:mm tt</TimePicker.Format>
视图模型:(从数据库中获取当前项的时间)

在自定义渲染器(即CustomTimePicker类)中:

protected override void OnElementChanged(ElementChangedEventArgs<TimePicker> e)
    {
        base.OnElementChanged(e);
        Control.TextSize = 14;
        Control.Text = DateTime.Now.ToString("hh:mm tt");
    }


 public void OnTimeSet(Android.Widget.TimePicker view, int hourOfDay, int minute)
    {
        var time = new TimeSpan(hourOfDay, minute, 0);
        this.Element.SetValue(Xamarin.Forms.TimePicker.TimeProperty, time);
        var dateTime = new DateTime(time.Ticks);
        var formattedTime = dateTime.ToString("h:mm tt", CultureInfo.InvariantCulture);
        this.Control.Text = formattedTime;
    }
protected override void OnElementChanged(ElementChangedEventArgs e)
{
基础。一个要素发生变化(e);
Control.TextSize=14;
Control.Text=DateTime.Now.ToString(“hh:mmtt”);
}
public void OnTimeSet(Android.Widget.TimePicker视图,int hourOfDay,int minute)
{
var时间=新的时间跨度(小时、天、分钟、0);
this.Element.SetValue(Xamarin.Forms.TimePicker.TimeProperty,time);
var dateTime=新的日期时间(time.Ticks);
var formattedTime=dateTime.ToString(“h:mm tt”,CultureInfo.InvariantCulture);
this.Control.Text=格式化时间;
}
我想要12小时格式的时间选择器,无论手机的时间格式如何,所选时间都应为12小时格式。
由于
OnTimeSet
方法,我可以将其转换为12小时,但这是第一次使用设备的时间格式设置。

应该有一个IS24小时视图

你有保险吗

---编辑,嗯---

两个时钟,一个是12小时制,显示现在是12点24分

<TimePicker x:Name="TimePicker12">
     <TimePicker.Format>hh:mm tt</TimePicker.Format>
</TimePicker>

这对我不起作用。此外,它只能在OnTimeSet方法中使用,该方法在第一次打开后被调用。我正在通过数据库调用从ViewModel绑定timepicker的time属性,因此第一次无法从xaml.cs绑定时间。仅适用于Android,不适用于IOS我很确定在xamarin中,计时器默认为12小时格式forms@G.hakim,即使设备格式是24小时?是的,当然不是这样对你有用吗?不,如果设备设置是24小时,它会显示24小时时钟和格式
protected override void OnElementChanged(ElementChangedEventArgs<TimePicker> e)
    {
        base.OnElementChanged(e);
        Control.TextSize = 14;
        Control.Text = DateTime.Now.ToString("hh:mm tt");
    }


 public void OnTimeSet(Android.Widget.TimePicker view, int hourOfDay, int minute)
    {
        var time = new TimeSpan(hourOfDay, minute, 0);
        this.Element.SetValue(Xamarin.Forms.TimePicker.TimeProperty, time);
        var dateTime = new DateTime(time.Ticks);
        var formattedTime = dateTime.ToString("h:mm tt", CultureInfo.InvariantCulture);
        this.Control.Text = formattedTime;
    }
<TimePicker x:Name="TimePicker12">
     <TimePicker.Format>hh:mm tt</TimePicker.Format>
</TimePicker>
<TimePicker x:Name="TimePicker24">
     <TimePicker.Format>HH:mm</TimePicker.Format>
</TimePicker>
TimePicker12.Time = TimeSpan.FromMinutes(DateTime.Now.Minute);
TimePicker24.Time = TimeSpan.FromMinutes(DateTime.Now.Minute);