在UWP中选择和绑定日期和时间

时间:2017-06-24 17:18:11

标签: c# uwp

这似乎应该很容易,但我还没有找到一个简单的解决方案。我知道我可以有CalendarDatePicker,DatePicker等,或者我可以有一个TimePicker。我可以将它们放在我的页面上并绑定到两个单独的属性,这些属性本身会通知我关心的DateTime属性,该属性从第一个选择器获取日期(年,日,月),以及从第二个选择器获取的时间。 强调文字 但这似乎完全是hackish。有没有办法在选择日期和时间时绑定到单个DateTime对象? I.E.我真的只想将DatePicker / CalendarDatePicker和TimePicker组合到一个绑定到单个DateTime对象的逻辑XAML控件中。

3 个答案:

答案 0 :(得分:1)

你可以尝试我写的这个简单的功能来结合你的日期和时间。它的作用是删除DatePicker中的默认时间,并将TimePicker中的时间添加到该变量。

private static DateTime CombineDateAndTime(DateTime dateObj,DateTime timeObj)
    {
        DateTime newDateTime;

        //get timespan from the date object
        TimeSpan spanInDate = dateObj.TimeOfDay;

        //subtract it to set date objects time to 0:00
        dateObj = dateObj.Subtract(spanInDate);

        //now add your newTime to date object
        newDateTime = dateObj.Add(timeObj.TimeOfDay);

        //return new value
        return newDateTime;
    }

希望这有帮助。

答案 1 :(得分:0)

// code behind
DateTime date;
TimeSpan time
{
  get => date.TimeOfDay;
  set
  {
    date = date.AddTicks(value.Ticks);
  }
}

// xaml
<DatePicker Date={x:Bind date, Converter={StaticResource DateTimeToOffsetConverter}}" 
/>
<TimePicker Time={X:Bind time}" />

答案 2 :(得分:-1)

我发现以下代码很有用: -

    int rex01=  t21.Date.Value.Year;                      
    int rex02 = t21.Date.Value.Month;        
    int rex03 = t21.Date.Value.Day;            
    int rex04 = t22.Time.Hours;           
    int rex05 = t22.Time.Minutes;        
    int rex06 = t22.Time.Seconds;  

    DateTime T02 = new DateTime(rex01, rex02, rex03, rex04, rex05, rex06);

请注意t21是DatePicker,t22是TimePicker。 目前用于SQLite和UWP。