2012-03-18 65 views
2

Im使用Datepicker控件獲取日期並將其顯示在WP7的Textblock中。我希望它只顯示日期而不顯示時間。 Datepicker只顯示日期,但是當我想在TextBlock中顯示它時,它會顯示日期和時間。我使用數據綁定設置的日期選擇日期:Datepicker僅返回日期

public class Task 
{ 
    public DateTime Date { get; set; } 
    public Task() 
    { 
     Date = DateTime.Now; 
    } 
} 

XAML:

<toolkit:DatePicker Value="{Binding Mode=TwoWay, Path=Date}" FlowDirection="RightToLeft" /> 
<TextBlock x:Name="TxbTaskDate" Text="{Binding Date}" /> 

我如何將TextBlock只顯示日期和時間不是?

+0

您可能還需要考慮本土化。其中一些答案的確可以直接格式化爲日/月/年的部分,但在某些國家(如美國),他們每月/每天/每年執行一次。 – aqwert 2012-03-18 21:49:36

回答

4

您應該添加的StringFormat

<TextBlock x:Name="TxbTaskDate" 
      Text="{Binding Date, StringFormat='{}{0:dd.MM.yyyy}'}" /> 
+0

是的,看起來你有那些棘手的逃跑{}是正確的。 – 2012-03-18 21:41:48

+0

謝謝,這樣做! – Glenn 2012-03-18 21:45:33

0

DateTime包含一個時間組件,就像它的名字所暗示的那樣。您可以在TextBlock綁定中使用ValueConverter來剝離時間並僅顯示日期。

在高層次上,ValueConverter將採用一種類型,例如DateTime,並允許您對其進行一些轉換。我可能會使其返回一個格式化string

String.Format("{0:M/d/yyyy}", dt); 

這裏有一個good intro to ValueConverter,如果你以前沒有使用過的。

1

一個.NET日期時間始終包括時間。你的問題是與TextBlock中的

<!-- untested --> 
<TextBlock x:Name="TxbTaskDate" Text="{Binding Date StringFormat={0:dd-MM-yyyy}}" /> 
+0

如果這樣做你需要的一切,這是一個比'ValueConverter'更簡單的解決方案。 – 2012-03-18 21:40:26

3

格式化試試這個:

<TextBlock x:Name="TxbTaskDate" Text="{Binding Date, StringFormat=d}" /> 
+0

我更喜歡這個,因爲它會拿起用戶區域設置 – aqwert 2012-03-18 21:50:09

相關問題