【发布时间】:2018-03-12 14:55:29
【问题描述】:
我是 Xamarin 的新手。我有一个表单,用户可以在其中创建事件。我在表单中使用 datepicker 和 timepicker。进行选择后,如果我先选择日期,则时间值不会改变,并且两个标签都有两个时间值[请参考图片]。但是最大的问题是这些值在后端数据库中存储为空,即使我将它们存储为“字符串”。请帮忙,这非常令人沮丧,因为在其他地方找不到提示/解决方案。谢谢!
This is how the label values are displayed
这是我的模型:
[JsonProperty("EndDateTime")]
public String StartDateTime { get; set; }
[JsonProperty("EndDateTime")]
public String EndDateTime { get; set; }
这是我的看法:
<Label
Text="Start Date"
Grid.Row="0"
Grid.Column="0"
></Label>
<Label
Text="Finish Date"
Grid.Row="0"
Grid.Column="1"
></Label>
<DatePicker
Format="MMM dd, yyyy"
DateSelected="DatePicker_StartDateSelected"
Grid.Column="0"
Grid.Row="1"
MinimumDate="{x:Static system:DateTime.UtcNow}"
/>
<DatePicker
Format="MMM dd, yyyy"
DateSelected="DatePicker_FinishDateSelected"
Grid.Column="1"
Grid.Row="1"
MinimumDate="{x:Static system:DateTime.UtcNow}"
/>
<TimePicker
x:Name="StartTime"
Format="hh:mm"
Grid.Row="2"
Grid.Column="0"
/>
<TimePicker
x:Name="EndTime"
Format="hh:mm"
Grid.Row="2"
Grid.Column="1"
/>
<Label
x:Name="StartDate"
Grid.Row="3" Grid.Column="0"
FontAttributes="Bold"
Text="{Binding StartDateTime, StringFormat='{}{0:MMM dd, yyyy hh:mm}'}"
/>
<Label
x:Name="FinishDate"
Grid.Row="3"
Grid.Column="1"
FontAttributes="Bold"
Text="{Binding EndDateTime, StringFormat='{}{0:MMM dd, yyyy hh:mm}'}"
/>
这就是我在后面的代码中将日期时间与时间连接起来的方式:
private void DatePicker_StartDateSelected(object sender, DateChangedEventArgs e)
{
StartDate.Text = e.NewDate.Date.ToString(CultureInfo.InvariantCulture) + " " + StartTime.Time.ToString();
}
private void DatePicker_FinishDateSelected(object sender, DateChangedEventArgs e)
{
FinishDate.Text = e.NewDate.Date.ToString(CultureInfo.InvariantCulture) + " " + EndTime.Time.ToString();
}
【问题讨论】:
-
当时间被选择时,TimePickers 是否也有一个事件,你应该听吗?似乎只有在日期更改时才更新 StartDate 和 FinishDate 标签。
-
@stiduck 感谢您的回复。我在 StartDate 和 FinishDate 事件(+ StartTime.Time.ToString())中将它们全部转换为字符串。但是,即使我忽略 TimePicker 类,它仍然会将 DateTime 发送为 null。
标签: c# xamarin.forms