2015-10-18 68 views
4

在我WPF應用程序,我想給用戶呈現在不同的時區的所有日期的選項。也就是說,以保持數據的,但只有存在不同它TextBlock中文本綁定到日期時間覆蓋日期時間序列化到字符串

我試圖達到這個而不引入包裝類型或使用轉換器 - 這將是糟糕的設計,因爲這可能很容易被其他開發人員錯過的代碼。此外,現有的代碼可以保持不變。

有沒有辦法在日期時間序列進行干預,以字符串的TextBlock結合內部和插入我自己的邏輯呢?使用自定義序列化程序?

否則,有沒有辦法讓我重寫基本的DateTime.ToString()方法並在那裏插入我自己的邏輯?

+1

集[' StringFormat'(https://msdn.microsoft.com/en-us/library/system.windows.data.bindingbase.stringformat(v = vs.110)的.aspx)對你的'TextBlock.Text' b根據CultureInfo格式化日期時間,數字等 – dkozl

+0

,所以你只需要改變它。 – Spawn

+0

謝謝,但我想顯示其他格式的其他格式。相同的格式,不同的時間 - 根據時區。 – user3065661

回答

0

您可以在綁定使用轉換器:
https://msdn.microsoft.com/en-us/library/system.windows.data.ivalueconverter(v=vs.110).aspx
的IValueConverter
XAML:

「Source =」{Binding MyDate, Converter={StaticResource MyDateTimeZoneConverter}} 


並添加Timezoneconversion邏輯到類MyDateTimeZoneConverter:的IValueConverter {...}

+0

當然,是的。但正如我所說,這會導致兩件事:第一,我必須訪問我的應用程序中的所有地方並對其進行編輯。第二,任何來處理代碼的人都可能會錯過對時區支持的需求。我需要在一個地方管理它,或者至少在最少的地方管理它。謝謝。 – user3065661

+0

你可以設置TimeZoneInfo.Local = Mytimezone;和DateTime.ToString()在Mytimezone時間返回字符串。但它錯了%)我認爲使用轉換器更好... – kain64b

相關問題