2017-07-01 2 views
1

Ich habe einen Toggle Switch in meiner Seite, wenn der Status ON ist, ist die Farbe identisch mit meiner Thema Farbe. Zuerst muss ich seine Farbe ändern, wenn ON ist.Ändern ToggleSwitch ON-Farbe dynamisch in Universal Windows-Anwendung

Zweitens möchte ich die Farbe dynamisch in C# -Code ändern, indem Sie Funktion aufrufen.

I mit folgenden Code Hintergrundfarbe ändern, aber ich konnte nicht einen Weg zu ändern, seine ON-Farbe

public void ChangeTogSwColor(Windows.UI.Color _color) 
{ 
    mySwitch.Background = _color; 
} 

danke

Antwort

1

Dies kann durch Überschreiben der ToggleSwitch ‚s finden Standardstil.

Zuerst, schnappen Sie sich den Stil von here und legen Sie es in Ihre App.xaml. genannt SwitchKnobBounds Danach wird ein Element lokalisieren -

<Rectangle x:Name="SwitchKnobBounds" 
      Fill="{ThemeResource ToggleSwitchFillOn}" 
      Stroke="{ThemeResource ToggleSwitchStrokeOn}" 
      StrokeThickness="{ThemeResource ToggleSwitchOnStrokeThickness}" 
      Width="44" Height="20" Opacity="0" RadiusY="10" Grid.Row="2" RadiusX="10" /> 

Dies ist das Element, das den Grenze und Hintergrund der ToggleSwitch darstellt. Um die Hintergrundfarbe zu ändern, können Sie einfach ToggleSwitchFillOn mit der gewünschten Farbe ersetzen.

Da Sie es jedoch auch dynamisch im Code aktualisieren möchten, sollten Sie die Eigenschaft an eine vorhandene Abhängigkeitseigenschaft des Steuerelements ToggleSwitch binden (andernfalls müssen Sie das Steuerelement erweitern und eigene Abhängigkeitseigenschaften hinzufügen).

Ich persönlich würde Background verwenden und ersetzen Background="{TemplateBinding Background}" mit Background="Transparent" von der obersten Ebene Grid weil ich nie wirklich notwendig, um die Steuerung eine andere Hintergrundfarbe anders als transparent zu geben.

Dann Ihre Rectangle würde wie folgt aussehen -

<Rectangle x:Name="SwitchKnobBounds" 
      Fill="{TemplateBinding Background}" 
      Stroke="{ThemeResource ToggleSwitchStrokeOn}" 
      StrokeThickness="{ThemeResource ToggleSwitchOnStrokeThickness}" 
      Width="44" Height="20" Opacity="0" RadiusY="10" Grid.Row="2" RadiusX="10" /> 

Schließlich können Sie die Background Farbe des Auf Zustand direkt in XAML oder im Code festgelegt.

<ToggleSwitch x:Name="MyToggle" Background="Green" /> 

oder

MyToggle.Background = Colors.Red; 
+0

Würden Sie mir bitte sagen, mehr Details darüber, wo soll ich ** SwitchKnobBounds lokalisieren **? –

+0

Siehe den Link, den ich der Antwort angehängt habe? Gehe zum Link und suche nach dem Namen "SwitchKnobBounds". –