2013-08-01 32 views
0

在我的WPF应用程序中,我使用了扩展WPF Toolkit中的TimePicker控件。当我运行应用程序时,TimePicker控件应显示默认值为“12:00 AM”。目前它显示空白。如何实现这个结果?如何设置TimePicker控件的默认时间

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

我想你在ViewModel类中实现了INotifyPropertyChanged接口,是吗? – Nitesh

+0

是的。但是INotifyPropertyChanged接口接口与这个关系是什么?你可以解释吗? – user2622971

+1

@Nitesh即使OP做了,他在设置值时也不会调用OnPropertyChanged,所以没关系。 – JMK

回答

0

Isn`t它因为TimePicker.ValueDateTime类型的,并且你将其绑定到StartTimeBinding属性是string类型的?刚刚得到的值,TimePicker会做格式化:

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

编辑: 看来,我的建议上面不能解决问题作为TimePicker作品好吗处理字符串。所以我猜这个问题在于这个部分:ElementName=MainWin。在这种情况下没有MainWin元素,所以绑定无法找到所需的属性。很难说没有看到整个布局,但也许你可以用RelativeSource修复它。

0

尝试从您的属性中删除ToString(h:mm tt")并将其类型更改为DateTimeTimePicker对照结合到DateTime,而不是string

0

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

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