我可以硬塞进DateTimePicker日期和Textbox“吗;时间“;转换为DateTime

本文关键字:时间 转换 DateTime Textbox DateTimePicker 日期 我可以 | 更新日期: 2023-09-27 18:24:49

我有一组这样的组件:

<StackPanel Orientation="Horizontal" >
    <Label>Between</Label>
    <DatePicker Name="dtpFrom" ></DatePicker>
    <TextBox Name="timeFrom" MinWidth="60" />
    <Label>and</Label>
    <DatePicker Name="dtpTo"></DatePicker>
    <TextBox Name="timeTo"
               MinWidth="60" />
</StackPanel>

用户可以在其中选择日期并设置"开始"日期和时间以及"结束"日期和日期。

我想将这些(DatePicker的日期部分与TextBox中表示的相应时间部分)组合为DateTime值。例如:

DateTime dtFrom;

我希望能够做一些类似(伪代码)的事情:

dtFrom = (DateTime) dtpFrom.Date + Convert.ToTime(timeFrom);

有办法做到这一点吗?

我可以硬塞进DateTimePicker日期和Textbox“吗;时间“;转换为DateTime

我建议在DataContext(即:ViewModel)中处理此问题,并绑定到两个单独的属性。这些可以很容易地映射到底层CCD_ 1。

例如:

// In ViewModel
private DateTime dateTime;
public DateTime Date
{
    get { return dateTime.Date; }
    set
    {
        if (value != dateTime.Date)
        {
            dateTime = value.Date + dateTime.TimeOfDay;
            RaisePropertyChanged("Date");
        }
    }
}
public TimeSpan Time
{
    get { return dateTime.TimeOfDay; }
    set
    {
        if (value != dateTime.TimeOfDay)
        {
            dateTime = dateTime.Date + value;
            RaisePropertyChanged("Time");
        }
    }
}

这将允许您将每个控件绑定到适当的属性,但仍然可以在单个DateTime实例中维护所有内容。