[英]How to bind time in TimePicker Universal windows Platform?
如何在TimePicker
绑定时间。 当我尝试绑定时间时,出现 FormatException 错误。 如何转换为TimePicker
支持的格式?
TimePicker.Time 属性属于 TimeSpan 类型,因此为了绑定到 TimePicker 的时间属性,我们需要将日期时间转换为时间跨度。
public class MainViewModel : ObservableObject
{
//Initialize someDateTime with a default value
private DateTime someDateTime = DateTime.Parse("07/21/1969 2:56AM");
public DateTime SomeDateTime
{
get { return someDateTime; }
set { Set(ref someDateTime,value); }
}
}}
public class DateTimeToTimeSpanConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, string language)
{
try
{
DateTime dt = (DateTime)value;
TimeSpan? ts = DateTimeConverter.DateTimeToTimeSpan(dt);
return ts.GetValueOrDefault(TimeSpan.MinValue);
}
catch (Exception ex)
{
System.Diagnostics.Debug.WriteLine(ex.Message);
return TimeSpan.MinValue;
}
}
}
主页.xaml:
<Page ...>
<Page.DataContext>
<ViewModels:MainViewModel/>
</Page.DataContext>
<Page.Resources>
<Converters:DateTimeToTimeSpanConverter
x:Key="DateTimeToTimeSpanConverter"/>
</Page.Resources>
<!-- ... -->
<TimePicker
Header="My time"
Margin="10" FontSize="24"
Time="{Binding SomeDateTimeTime, Converter={StaticResource DateTimeToTimeSpanConverter}, Mode=TwoWay}" />
<!-- ... -->
</Page>
TimePicker.Time 是一个时间跨度。 您可以使用 DateTime TimeOfDay 属性设置时间。
例如:
XAML:
<TimePicker Time="{Binding PickerTime}"/>
视图模型.cs:
TimeSpan pickerTime = DateTime.Now.TimOfDay;
///PROPERTY
public TimeSpan PickerTime {
get { return pickerTime; }
set {
if(pickerTime != value) {
pickerTime = value;
OnPropertyChanged("PickerTime");
}
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.