在通用 Windows 应用程序中动态更改 ToggleSwitch ON-Color
Changing ToggleSwitch ON-Color Dynamically in Universal Windows Application
我的页面中有一个拨动开关,当它的状态为ON时,它的颜色与我的主题颜色相同。首先我需要在 ON.
时改变它的颜色
其次,我想通过调用函数在 C# 代码中动态更改颜色。
我可以使用以下代码更改背景颜色,但我找不到更改其 ON-Color
的方法
public void ChangeTogSwColor(Windows.UI.Color _color)
{
mySwitch.Background = _color;
}
谢谢
这可以通过覆盖 ToggleSwitch
的默认样式来完成。
首先,从 here 中获取样式并将其放入您的 App.xaml
中。之后,找到一个名为 SwitchKnobBounds
-
的元素
<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" />
这是表示 ToggleSwitch
的 border 和 background 的元素。要更改背景颜色,您只需将 ToggleSwitchFillOn
替换为您喜欢的任何颜色即可。
但是,由于您还想在代码中动态更新它,您应该让 Fill
属性 绑定到 ToggleSwitch
的现有依赖项 属性控件(否则你需要扩展控件并添加你自己的依赖属性)。
我个人会使用 Background
并从顶层 Grid
将 Background="{TemplateBinding Background}"
替换为 Background="Transparent"
因为我从来不需要为控件提供不同的背景颜色除了 透明.
然后,你的 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或代码中设置On状态的Background
颜色
<ToggleSwitch x:Name="MyToggle" Background="Green" />
或
MyToggle.Background = Colors.Red;
我的页面中有一个拨动开关,当它的状态为ON时,它的颜色与我的主题颜色相同。首先我需要在 ON.
时改变它的颜色其次,我想通过调用函数在 C# 代码中动态更改颜色。
我可以使用以下代码更改背景颜色,但我找不到更改其 ON-Color
的方法public void ChangeTogSwColor(Windows.UI.Color _color)
{
mySwitch.Background = _color;
}
谢谢
这可以通过覆盖 ToggleSwitch
的默认样式来完成。
首先,从 here 中获取样式并将其放入您的 App.xaml
中。之后,找到一个名为 SwitchKnobBounds
-
<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" />
这是表示 ToggleSwitch
的 border 和 background 的元素。要更改背景颜色,您只需将 ToggleSwitchFillOn
替换为您喜欢的任何颜色即可。
但是,由于您还想在代码中动态更新它,您应该让 Fill
属性 绑定到 ToggleSwitch
的现有依赖项 属性控件(否则你需要扩展控件并添加你自己的依赖属性)。
我个人会使用 Background
并从顶层 Grid
将 Background="{TemplateBinding Background}"
替换为 Background="Transparent"
因为我从来不需要为控件提供不同的背景颜色除了 透明.
然后,你的 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或代码中设置On状态的Background
颜色
<ToggleSwitch x:Name="MyToggle" Background="Green" />
或
MyToggle.Background = Colors.Red;