如何修改Xamarin Forms UWP项目的垂直滚动条颜色?
修改Xamarin Forms UWP端垂直滚动条颜色的实现方法
可以通过UWP项目的App.xaml文件直接完成修改,无需编写C#代码,以下是具体实现方式:
全局修改所有滚动条颜色
- 打开Xamarin Forms解决方案里的UWP项目,找到
App.xaml文件。 - 在
<Application.Resources>标签内添加自定义的ScrollBar样式,覆盖默认样式来调整颜色:
<Application.Resources> <Style TargetType="ScrollBar"> <Setter Property="Template"> <Setter.Value> <ControlTemplate TargetType="ScrollBar"> <Grid> <VisualStateManager.VisualStateGroups> <VisualStateGroup x:Name="CommonStates"> <VisualState x:Name="Normal"/> <!-- 鼠标悬停时的滑块颜色 --> <VisualState x:Name="PointerOver"> <Storyboard> <ColorAnimation Storyboard.TargetName="VerticalThumb" Storyboard.TargetProperty="(Rectangle.Fill).(SolidColorBrush.Color)" To="#FF66BB6A" Duration="0"/> </Storyboard> </VisualState> <!-- 鼠标按下时的滑块颜色 --> <VisualState x:Name="Pressed"> <Storyboard> <ColorAnimation Storyboard.TargetName="VerticalThumb" Storyboard.TargetProperty="(Rectangle.Fill).(SolidColorBrush.Color)" To="#FF43A047" Duration="0"/> </Storyboard> </VisualState> </VisualStateGroup> </VisualStateManager.VisualStateGroups> <!-- 垂直滚动条轨道颜色 --> <Rectangle x:Name="VerticalTrack" Fill="#E0E0E0" Width="6" Margin="0,4"/> <!-- 垂直滚动条默认滑块颜色 --> <Rectangle x:Name="VerticalThumb" Fill="#BDBDBD" Width="6" RadiusX="3" RadiusY="3" Margin="0,4"/> </Grid> </ControlTemplate> </Setter.Value> </Setter> </Style> </Application.Resources>
你可以根据需求替换代码中的颜色值,比如把#BDBDBD改成你想要的默认滑块颜色,#E0E0E0改成轨道颜色。
3. 保存文件后重新编译UWP项目,运行就能看到所有垂直滚动条的颜色已经修改。
仅修改特定控件的滚动条颜色
如果不想全局修改,只想调整某个控件(比如ListView、ScrollView)的滚动条,可以在App.xaml中为该控件设置模板,内部嵌套自定义的ScrollBar样式:
<Application.Resources> <Style TargetType="ListView"> <Setter Property="Template"> <Setter.Value> <ControlTemplate TargetType="ListView"> <ScrollViewer x:Name="ScrollViewer" VerticalScrollBarVisibility="Auto"> <ScrollViewer.Resources> <Style TargetType="ScrollBar"> <!-- 这里复制上面的ScrollBar完整样式代码 --> </Style> </ScrollViewer.Resources> <ItemsPresenter/> </ScrollViewer> </ControlTemplate> </Setter.Value> </Setter> </Style> </Application.Resources>
补充说明
- 这种方式只对UWP端生效,不会影响其他平台的滚动条样式。
- 若需要更复杂的样式效果,可以参考UWP原生
ScrollBar的默认模板,在此基础上调整细节。 - 不需要在
App.xaml.cs中编写代码,静态XAML样式就能满足需求;如果要动态修改颜色,才需要在后台代码中操作资源字典。
内容的提问来源于stack exchange,提问作者Esteban Chornet
相关产品推荐
相关产品推荐

