2013-08-01 33 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}" />