0

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

Xml代码:

<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");
    } 
}
4

3 回答 3

1

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

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

在构造函数中将此属性设置为您想要的默认值:

 StartShift = "6:30";

xml代码:

  <xctk:TimePicker Grid.Row="5"  Grid.Column="1" Width="auto" StartTime="5:00" Value="{Binding StartShift}" />
于 2017-05-25T15:52:39.373 回答
0

是不是因为TimePicker.Value是类型的DateTime,你把它绑定到StartTimeBinding类型的属性上string?只需获取值,TimePicker 就会进行格式化:

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

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

于 2013-08-01T08:28:02.880 回答
0

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

于 2013-08-01T08:28:14.103 回答