2011-10-02 10 views
6

Szaleję. Czy ktoś może mi wyjaśnić, dlaczego te formaty ciągów formatujących to samo są tak różne?Dlaczego te różne formaty ciągów w TimeSpan na XAML?

<DataGridTextColumn Header="Max Time" IsReadOnly="True" Binding="{Binding MaxTime, StringFormat=hh\\:mm\\:ss, TargetNullValue=---}"> 

<DataGridTextColumn Header="Min Time" IsReadOnly="True"> 
    <DataGridTextColumn.Binding> 
     <Binding Path="MinTime" StringFormat="{}{0:hh':'mm':'ss}" TargetNullValue=" --- "/> 
    </DataGridTextColumn.Binding> 
</DataGridTextColumn> 

Oczywiście każdy nie działa z drugiej strony.

EDYCJA: Im więcej pracuję z WPF, tym bardziej uważam, że nie jest to produkt dojrzały.

Odpowiedz

11

nie jestem ekspertem w formatowaniu TimeSpan więc nie mogę powiedzieć dokładnie, dlaczego oni produkują ten sam wynik, ale można przeczytać o tym tutaj: Custom TimeSpan Format Strings

Oczywiście każdy z nich nie działają na inny.

Działają w ten sam sposób, wystarczy użyć jednego ukośnika odwrotnego w podwójnych cudzysłowach. Następujące wychodzi na zewnątrz do. Zamiast więc trzeba napisać

<Binding Path="MinTime" 
     StringFormat="hh\:mm\:ss" 
     TargetNullValue=" --- "/> 

dwóch następujących Bindings powinna produkować ten sam rezultat

<DataGridTextColumn Header="Max Time" IsReadOnly="True" 
        Binding="{Binding Path=MaxTime, 
             StringFormat=hh\\:mm\\:ss, 
             TargetNullValue=' --- '}"/> 
<DataGridTextColumn Header="Min Time" IsReadOnly="True"> 
    <DataGridTextColumn.Binding> 
     <Binding Path="MinTime" 
       StringFormat="hh\:mm\:ss" 
       TargetNullValue=" --- "/> 
    </DataGridTextColumn.Binding> 
</DataGridTextColumn> 

I tak powinno następujących dwóch

<DataGridTextColumn Header="Max Time" IsReadOnly="True" 
        Binding="{Binding Path=MaxTime, 
             StringFormat={}{0:hh':'mm':'ss}, 
             TargetNullValue=' --- '}"/> 
<DataGridTextColumn Header="Min Time" IsReadOnly="True"> 
    <DataGridTextColumn.Binding> 
     <Binding Path="MinTime" 
       StringFormat="{}{0:hh':'mm':'ss}" 
       TargetNullValue=" --- "/> 
    </DataGridTextColumn.Binding> 
</DataGridTextColumn> 
+0

Mmmmm, chciałbym powiedzieć, że próbowałem \ : ale teraz spróbowałem jeszcze raz i działa ... dziwnie ... i tak dziękuję. –

+0

@SoMos: Tak, wiem, to się dzieje :) –