2010-10-22 2 views
5

Ich habe das WP7-Toolkit und verwende den Kippschalter.Wie wp7 toolkit anpassen ToggleSwitch

Momentan wird On oder Off angezeigt.

Ich weiß, dass Sie es mithilfe der Inhaltsvorlage anpassen können, und der Beispielcode, der mit dem Take-it geliefert wird, zeigt genau das, aber ich kann keine Möglichkeit finden, an etwas anderes zu ändern.

Ich möchte in einer privaten Methode im Quellcode gesetzt Ja und Nein

Antwort

2

Es gibt eine viel einfachere Art und Weise, stellen Sie den Inhalt auf Nein und dann einen Ereignishandler erstellen für jede wechseln, um es ja zu machen sagen und dann No: die gebundenen

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

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

    } 
3

ich meinen eigenen Werteumwandler war zu derselben booleschen Eigenschaft in meinem Ansichtsmodell wie IsChecked. So auf der Ansicht, es sah aus wie:

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

Ich weiß, dass die Frage ist ziemlich alt, aber ich denke, dass diese Antwort nützlich sein kann, weil es keine Notwendigkeit der Kontrolle des Code neu kompilieren.

Wir können die Content an die IsChecked Eigenschaft binden und eine Converter verwenden, die unsere benutzerdefinierte Zeichenfolge zurückgibt.

Dies ist, was ich für mein Projekt tat:

<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}}"/> 

wo die SwitchOnOffConverter dieses ist:

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(); 
    } 
} 
+1

Ich mag diese Lösung. Sehr elegant. –