2011-10-02 11 views
6

Me estoy volviendo loco. ¿Puede alguien explicarme por qué estos formatos de cadena que forman el mismo formato son tan diferentes?¿Por qué esos diferentes formatos de cadena en TimeSpan en 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> 

Por supuesto, cada uno no funciona en el otro.

EDITAR: Cuanto más trabajo con WPF, más siento que no es un producto suficientemente maduro.

Respuesta

11

No soy un experto en el formato TimeSpan así que no puedo decir exactamente por qué se producen el mismo resultado, pero se puede leer sobre ello aquí: Custom TimeSpan Format Strings

Por supuesto, cada uno de ellos no funcionan en el otro.

Funcionan de la misma manera, el hecho es que debe usar una barra invertida dentro de las comillas dobles. El siguiente

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

sale a hh\\\\:mm\\\\:ss. Así que en lugar usted debe escribir

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

Los dos siguientes Bindings debe producir el mismo resultado

<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> 

y así que si los dos siguientes

<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, yo diría que probé la \ : pero ahora lo intenté de nuevo y está funcionando ... extraño ... gracias de todos modos. –

+0

@SoMos: Sí, lo sé, sucede :) –

Cuestiones relacionadas