78

I have a TextBlock that is bound to a DateTime property. How do I configure the format of the date?

nabulke
  • 11,025
  • 13
  • 65
  • 114
Peter
  • 37,042
  • 39
  • 142
  • 198

3 Answers3

154

There is a string format property available when you are declaring the binding:

<TextBox Text="{Binding Path=DateTimeValue, StringFormat=dd-MM-yyyy}" />

(You need to be on .NET 3.5 SP1 for this property to exist)

Ben
  • 54,723
  • 49
  • 178
  • 224
Martin Harris
  • 28,277
  • 7
  • 90
  • 101
39

If you want to use a common format string between bindings, you could declare the binding like this:

<Textbox Text={Binding Path=DateTimeValue, StringFormat={x:Static local:Constants.DateTimeUiFormat}} />

With your constants class like this:

public static class Constants
{
    public const string DateTimeUiFormat = "dd/MM/yyyy";

    //etc...
}
Louis Rhys
  • 34,517
  • 56
  • 153
  • 221
Brian Hinchey
  • 3,601
  • 1
  • 39
  • 36
  • 2
    Thanks Brian! I used this in combination with `System.Threading.Thread.CurrentThread.CurrentUICulture.DateTimeFormat.ShortDatePattern` to get an i18n short date. – Ben Jan 10 '19 at 23:30
28

May be helpful to someone:

<TextBlock Text="{Binding Source={x:Static sys:DateTime.Now},
           StringFormat='{}{0: Today is dddd, MMMM dd, yyyy, hh:mm:ss}'}"/>

or 24h and 2digits month and year format:

<TextBlock Text="{Binding Source={x:Static sys:DateTime.Now},
           StringFormat='{}{0: Today is dddd, MM.dd.yy, HH:mm:ss}'}"/>
ZloyMakak
  • 409
  • 4
  • 6