2011-05-12 8 views
5

Quiero ser capaz de establecer los minutos y segundos en un cuadro de texto. Ahora solo ato mi cuadro de texto a una propiedad, que es una propiedad TimeSpan. Así que ahora en mi cuadro de texto, el valor predeterminado es: 00:00:00.Tiempos de encuadernación en wpf mvvm, y mostrar solo minutos: ¿segundos?

Esto funciona bien, pero quiero poder tener solo 00:00. Para que las horas se eliminen

¿Cómo hago esto? Busqué en la red pero no encuentro ninguna buena solución

¡Gracias!

Este es mi Encuadernación:

public TimeSpan MaxTime 
{ 
    get 
    { 
     if (this.Examination.MaxTime == 0) 
      return TimeSpan.Zero; 
     else 
      return maxTime; 
    } 
    set 
    { 
     maxTime = value; 
     OnPropertyChanged("MaxTime"); 
     TimeSpan x; 
     this.Examination.MaxTime = int.Parse(maxTime.TotalSeconds.ToString());        
    } 
} 
<TextBox Height="23" HorizontalAlignment="Left" Margin="215,84,0,0" Text="{Binding Path=MaxTime,UpdateSourceTrigger=PropertyChanged,Mode=TwoWay}" VerticalAlignment="Top" Width="50" /> 

Respuesta

9

si sólo quería una forma de unión, entonces se podría utilizar StringFormat:

<TextBlock Text="{Binding MaxTime, StringFormat={}{0:hh\:mm}}" /> 

Si quieres unión bidireccional, entonces yo iría por un convertidor de valor personalizado.

[ValueConversion(typeof(TimeSpan), typeof(String))] 
public class HoursMinutesTimeSpanConverter : IValueConverter 
{ 
    public object Convert(object value, Type targetType, object parameter, 
          Globalization.CultureInfo culture) 
    { 
     // TODO something like: 
     return ((TimeSpan)value).ToString("hh\:mm"); 
    } 

    public object ConvertBack(object value, Type targetType, object parameter, 
           Globalization.CultureInfo culture) 
    { 
     // TODO something like: 
     return TimeSpan.ParseExact(value, "hh:\mm", CultureInfo.CurrentCulture); 
    } 
} 
+2

Escapar de los dos puntos en el formato de cadena no funcionó para mí. Tuve que cambiarlo a '{0: hh ':' mm}', es decir: '' – sthlm58

+0

o StringFormat = {} {0: hh \: mm} –

+0

¿Cómo solo esto muestra minutos y segundos? Entiendo 'hh' ser hora y' mm' ser minuto. – ProfK

Cuestiones relacionadas