如何设置时间选取器控件的默认时间

本文关键字:时间 选取 默认 控件 何设置 设置 | 更新日期: 2023-09-27 18:25:55

在我的 WPF 应用程序中,我使用了扩展 WPF 工具包中的 TimePicker 控件。当我运行应用程序时,TimePicker 控件应将默认值显示为"12:00 AM"。目前它向我显示空白。如何实现这个结果?

Xaml 代码:

<xctk:TimePicker x:Name="StartValue" Value="{Binding StartTimeBinding, 
    ElementName=MainWin, Mode=TwoWay}" Format="Custom" FormatString="hh:mm tt" 
    Background="Yellow" Padding="0" Margin="0" BorderThickness="0" Width="100" 
    EndTime="11:59:0"/>
<xctk:TimePicker x:Name="StopValue" Value="{Binding StopTimeBinding, 
     ElementName=MainWin, Mode=TwoWay}" Format="Custom" FormatString="hh:mm tt" 
    Background="Yellow" Padding="0" Margin="0" BorderThickness="0" Width="60" 
    EndTime="11:59:0"/>

TimePicker绑定到以下属性的控件:

public string StartTimeBinding 
{ 
    set
    { 
        this._id = value;
    } 
    get
    { 
        return this._started_at.ToString("h:mm tt");
    } 
}
public string StopTimeBinding 
{ 
    set
    {
        this._id = value;
    } 
    get
    { 
        return this._ended_at.ToString("h:mm tt");
    } 
}

如何设置时间选取器控件的默认时间

视图模型中设置此属性:

 private string _StartShift;
    public string StartShift
    {
        get { return _StartShift; }
        set
        {
            if (_StartShift != value)
            {
                _StartShift = value;
                OnPropertyChanged("StartShift");
            }
        }
    }

在构造器中将此属性设置为所需的默认值:

 StartShift = "6:30";

XAML 代码:

  <xctk:TimePicker Grid.Row="5"  Grid.Column="1" Width="auto" StartTime="5:00" Value="{Binding StartShift}" />

尝试从属性中删除ToString(h:mm tt")并将类型更改为 DateTimeTimePicker控件绑定到DateTime,而不是string

不是因为TimePicker.ValueDateTime 类型,并且您将其绑定到StartTimeBinding类型为 string 的属性吗?只需获取值,TimePicker 将进行格式化:

public DateTime StartTimeBinding 
{ 
    set
    { 
        this._id = value;
    } 
    get
    { 
        return this._started_at;
    } 
}

编辑:看来我上面的建议并不能解决问题,因为TimePicker字符串工作正常。所以我猜问题出在这一部分:ElementName=MainWin.此上下文中没有 MainWin 元素,因此绑定找不到必需的属性。如果不看到整个布局,很难说,但也许您可以使用 RelativeSource 修复它。