I have a TextBlock that is bound to a DateTime property. How do I configure the format of the date?
            Asked
            
        
        
            Active
            
        
            Viewed 1.2e+01k times
        
    78
            
            
        3 Answers
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
- 
                    3Just letting you know this is now TextBox <- capital B – Alex Mar 24 '17 at 13:01
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
- 
                    2Thanks 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
 
    