2014-02-26 133 views
1

將字符串傳遞給帶有DateTime控制的DependencyProperty似乎並沒有被允許:的DateTime XAML的WinRT

Cannot assign text value '00:00:00' into property 'StartTime' of type 'DateTime'

難道只是我還是不應該這是可能的嗎?我想假設的解決方法是提供一個IValueConverter將字符串轉換爲DateTime對象。對於調度程序/日曆像控制這有點煩人。

有些燈光?

+0

'DateTime time =「00:00:00」;'無效:'不能將類型'字符串'隱式轉換爲'System.DateTime'。至少對我來說,這是非常有意義的。 –

+0

Jap非常有意義,'DateTime time = Covert.ToDateTime(「00:00:00」);'將有助於代碼轉換問題,它會給一個對象提供今天的日期,但時間會像指定的那樣初始化。如果你想用綁定來實現,則需要一個值轉換器。 –

+0

我期待'DateTime'的日期部分未初始化,這種事情在WPF中起作用。另一方面,WinRT拒絕將其編譯出來。我需要一個轉換器,如果我綁定到一個字符串(不是我可以看到任何合理的理由這樣做)似乎缺少的是WinRT的'DateTime'類型上的'TypeConverter/Attribute'。 – rtlayzell

回答

1

TypeConverter在WinRT中不可用,並且該平臺似乎對某些UI類型具有一些內置轉換 - 這種隱式轉換不是其中之一。儘管你有幾個選擇。

  1. 正如你提到的 - 你可以使用一個值轉換器
  2. 您可以確保您的DateTime屬性綁定到一個DateTime視圖模型屬性。
  3. 將您的屬性定義爲String類型,並在控件內執行轉換 - 如果您通常使用XAML字符串初始化該屬性。將「String」附加到屬性的名稱以明確它是一個字符串也是值得的 - 例如, 'StartDateString'。
  4. 如果您想要同時使用DateTimeString類型的控件 - 您可以擁有兩種類型的屬性並在內部同步它們,確保防止屬性更改處理程序中的重入。
  5. 申報財產爲Object類型和檢測所設置的值,其一是直接設置DateTime值,從String或其他類型(DateTimeOffsetTimeSpan,...?)轉換或拋出不支持的值是什麼類型。

不幸的是,直到Windows平臺團隊添加對TypeConverter屬性的支持 - 您沒有一個漂亮的解決方案。