2017-07-01 23 views
1

ステータスがの場合、の私のトグルスイッチは私のページにあり、その色は私のテーマカラーと同じです。まず、のとき、その色を変更する必要があります。ユニバーサルWindowsアプリケーションでToggleSwitchをオンカラーに動的に変更する

第2に、関数を呼び出すことによって、C#コードで色を動的に変更したいと考えています。

私は次のコードで背景色を変更することができますが、私はそのON-色

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

を変更する方法を見つけることができませんでした。これは、ToggleSwitch年代をオーバーライドすることによって行うことができますあなたの

答えて

1

に感謝しますデフォルトスタイル。

まず、hereからスタイルを取得し、App.xamlに入れてください。これは、ToggleSwitch境界背景を表す要素である

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

- その後、要素を探しSwitchKnobBoundsと呼ばれます。背景色を変更するには、ToggleSwitchFillOnを好みの色に置き換えるだけです。 コントロールの既存の依存関係プロパティにバインドするには、Fillプロパティを持っている必要があります(そうしないと、コントロールを拡張して独自の依存関係プロパティを追加する必要があります)。

私は個人的にBackgroundを使用して、私は本当にコントロールに透明以外の異なる背景色を与えるために必要なことはありませんトップレベルGrid「原因からBackground="Transparent"Background="{TemplateBinding Background}"を置き換えます。

はその後、あなたの Rectangleは次のようになります -

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

最後に、あなたが直接XAMLまたはコードでオン状態のBackground色を設定することができます。

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

または

MyToggle.Background = Colors.Red; 
+0

あなたは** **私にSwitchKnobBoundsを私が見つけなければならない場所の詳細を教えていただけますか? –

+0

リンクを参照してください私は答えに添付されていますか?リンクに移動し、 "SwitchKnobBounds"という名前を検索します。 –

関連する問題