如何设置TimePicker控件的默认时间

时间:2013-08-01 07:03:57

标签: c# wpf timepicker

在我的WPF应用程序中,我使用了扩展WPF Toolkit中的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");
    } 
}

3 个答案:

答案 0 :(得分:1)

在视图模型中设置此属性:

 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}" />

答案 1 :(得分:0)

不是因为TimePicker.Value属于DateTime类型,而是将其绑定到类型为StartTimeBinding的{​​{1}}属性?只需获取值,TimePicker将执行格式化:

string

修改 我的建议似乎无法解决问题,因为public DateTime StartTimeBinding { set { this._id = value; } get { return this._started_at; } } 可以正常使用字符串。所以我猜这个问题出在这一部分:TimePicker。在此上下文中没有MainWin元素,因此绑定无法找到所需的属性。没有看到整个布局就很难说,但也许你可以用RelativeSource修复它。

答案 2 :(得分:0)

尝试从您的媒体资源中删除ToString(h:mm tt"),然后将类型更改为DateTimeTimePicker控件绑定到DateTime,而不是string