2015-02-10 63 views
4

我正在使用MVVM模式創建windows phone 8.1應用程序。我已經使用了datepicker,並且我想在viewModel中獲取datepicker的值(日期),所以我已經在viewModel中綁定了一個屬性。運行這個應用程序後,我在Visual Studio的輸出窗口中出現錯誤。轉換器無法將類型'system.datetime'的值轉換爲在windows phone 8.1中鍵入'datetime'Datepicker

錯誤:轉換器無法將類型'System.DateTime,mscorlib,Version = 4.0.0.0,Culture = neutral,PublicKeyToken = 7cec85d7bea7798e'的值轉換爲鍵入'DateTime'; BindingExpression:Path ='Date'DataItem ='App1.ViewModel.MainViewModel';目標元素是'Windows.UI.Xaml.Controls.DatePicker'(Name ='null');目標屬性是'日期'(類型'DateTime')。

這裏是我的, XAML視圖:

<DatePicker Grid.Row="1" Grid.Column="1" 
       VerticalContentAlignment="Center" 
       HorizontalContentAlignment="Center" 
       HorizontalAlignment="Left" 
       VerticalAlignment="Center" Margin="26,-0.333,0,0.5" 
       Date="{Binding Date}" 
       /> 

視圖模型屬性:

private DateTime _date; 
    public DateTime Date 
    { 
     get { return _date; } 
     set 
     { 
      _date = value; 
      RaisePropertyChanged(); 
     } 
    } 

誰能幫我解決這個錯誤。

回答

7

DatePickerDate屬性是DateTimeOffsetMSDN

這意味着你不能直接綁定到一個DateTime對象,因爲沒有轉換存在。但是,DateTimeOffset具有convienent屬性DateTimeMSDN a DateTime

所以只要改變你的綁定:

Date="{Binding Date.DateTime}" 

或者綁定一個DateTimeOffset財產和自己的後轉換。

+0

Thanks @BradleyDotNet!我已將屬性更改爲DateTimeOffset,現在錯誤消失了。但是我現在得到的財產的價值是1/1/0001 12:00:00 AM +00:00。你能告訴我如何獲得當前日期嗎? – 2015-02-10 19:22:37

+0

@UtsavDawn表示一個非設定值。用戶沒有選擇日期嗎? – BradleyDotNET 2015-02-10 19:23:23

+0

我剛剛檢查過,並得到了用戶從datepicker中選擇了一個值,但我仍然得到相同的值。 – 2015-02-10 19:37:13

相關問題