我用XAML为一个滑块控件写了下面的代码,注意到foreground
和background
属性只在不悬停在slider track
上和不点击它的时候设置slider track
的颜色。
所以我必须编写这个Slider.Resources
部分来访问这些资源并覆盖它们。
<Slider
x:Name="mySlider"
StepFrequency="0.1"
Minimum="0"
Maximum="8"
SnapsTo="StepValues"
Foreground="#b400ff"
Background="#6c4080">
<Slider.Resources>
<ResourceDictionary>
<ResourceDictionary.ThemeDictionaries>
<ResourceDictionary x:Key="Dark">
<!-- Using foreground colour -->
<SolidColorBrush x:Key="SliderTrackValueFillPointerOver" Color="#b400ff"/>
<SolidColorBrush x:Key="SliderTrackValueFillPressed" Color="#b400ff"/>
<!-- Using background colour -->
<SolidColorBrush x:Key="SliderTrackFillPointerOver" Color="#6c4080"/>
<SolidColorBrush x:Key="SliderTrackFillPressed" Color="#6c4080"/>
</ResourceDictionary>
<ResourceDictionary x:Key="Light">
<!-- Using foreground colour -->
<SolidColorBrush x:Key="SliderTrackValueFillPointerOver" Color="#b400ff"/>
<SolidColorBrush x:Key="SliderTrackValueFillPressed" Color="#b400ff"/>
<!-- Using background colour -->
<SolidColorBrush x:Key="SliderTrackFillPointerOver" Color="#6c4080"/>
<SolidColorBrush x:Key="SliderTrackFillPressed" Color="#6c4080"/>
</ResourceDictionary>
</ResourceDictionary.ThemeDictionaries>
</ResourceDictionary>
</Slider.Resources>
</Slider>
字符串
我有其他滑块需要不同的颜色作为背景,但作为XAML和WinUI的新手,每次都这样定义感觉有点过分。有没有一种方法可以说我项目中的所有滑块都应该使用foreground
和background
的颜色作为其资源字典部分中列出的值?
2条答案
按热度按时间dpiehjr41#
您可以定义一个custom attached property,让您以可重用的方式以编程方式应用资源:
字符串
用法:
型
sz81bmfz2#
你可以把它作为
Page
资源:字符串