【问题标题】:Selecting and Binding Date AND Time in UWP在 UWP 中选择和绑定日期和时间
【发布时间】:2017-06-24 17:18:10
【问题描述】:

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

【问题讨论】:

  • 是什么阻止您创建一个包含两者并公开单个 DateTime 依赖属性的用户控件?

标签: c# uwp


【解决方案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;
    }

希望这会有所帮助。

【讨论】:

    【解决方案2】:
    // 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}" />
    

    【讨论】:

      【解决方案3】:

      我发现以下代码很有帮助:-

          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。

      【讨论】:

      • 正如我在原始问题中所说,我知道您可以单独使用时间和日期选择器。
      猜你喜欢
      • 2020-04-23
      • 1970-01-01
      • 2023-03-07
      • 2011-08-14
      • 1970-01-01
      • 2012-09-11
      • 1970-01-01
      • 1970-01-01
      • 2010-09-10
      相关资源
      最近更新 更多