2010-10-22 8 views
5

Tengo el kit de herramientas WP7 y estoy usando el interruptor de palanca.Cómo personalizar wp7 toolkit ToggleSwitch

En este momento se muestra Encendido o Apagado.

Sé que puede personalizarlo utilizando la plantilla de contenido y el código de muestra suministrado con el takeit muestra exactamente eso, pero no puedo encontrar una manera de cambiar entre Activado/Desactivado a otra cosa.

Quiero mostrar Sí y No.

Respuesta

2

Hay una manera mucho más fácil, defina el contenido en No y luego crear un controlador de eventos para cada palanca correspondiente a hacerla decir Sí y luego n:

private void ToggleSwitch_Checked(object sender, RoutedEventArgs e) 
    { 
     togButton.Content = "Yes"; 
    } 

    private void ToggleSwitch_Unchecked(object sender, RoutedEventArgs e) 
    { 
     togButton.Content = "No"; 

    } 
3

He creado mi propio convertidor de valores que estaba obligado a la misma propiedad booleana en mi modelo de vista como IsChecked. Así que en la vista que parecía:

<toolkit:ToggleSwtich IsChecked="{Binding Completed}" Content="{Binding Completed, Converter={StaticResource YesNoConverter}" /> 
2

Sé que la pregunta es bastante antiguo, pero creo que esta respuesta puede ser útil, ya que no hay necesidad de volver a compilar el código del control.

Podemos unir el Content a la propiedad IsChecked y usar un Converter que devuelve nuestra cadena personalizada.

Esto es lo que hice para mi proyecto:

<toolkit:ToggleSwitch SwitchForeground="{StaticResource PhoneAccentBrush}" 
         Grid.Row="3" Grid.Column="1" 
         Header="{Binding Path=LocalizedResources.MyLabel, Source={StaticResource LocalizedStrings}}" 
         Content="{Binding IsChecked, Converter={StaticResource SwitchOnOffConverter}, RelativeSource={RelativeSource Self}}"/> 

donde el SwitchOnOffConverter es éste:

public class SwitchOnOffConverter : IValueConverter 
{ 
    public object Convert(object value, Type targetType, object parameter, CultureInfo culture) 
    {   
     return ((bool) value) ? AppResources.YesText : AppResources.NoText; 
    } 

    public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) 
    { 
     throw new NotSupportedException(); 
    } 
} 
No
+1

Me gusta esta solución. Muy elegante. –