滚动条的样式不起作用

Styling of scroll bar doesn't work

我用 C# UWP 编写。 ScrollBar 样式不行,但有些ScrollViewer 样式不错。

我背后的代码:

        Style ScrollBarStyle = new Style(typeof(ScrollBar));
        ScrollBarStyle.Setters.Add(new Setter(ScrollBar.BackgroundProperty, new SolidColorBrush(Colors.Blue)));

        Style ScrollViewerStyle = new Style(typeof(ScrollViewer));
        ScrollViewerStyle.Setters.Add(new Setter(ScrollViewer.BackgroundProperty, new SolidColorBrush(Colors.Blue)));

        Application.Current.Resources.Add(typeof(ScrollViewer), ScrollViewerStyle);
        Application.Current.Resources.Add(typeof(ScrollBar), ScrollBarStyle);

I write in C# UWP. ScrollBar Style is not work, but some style ScrollViewer Style is good .

ScrollBar背景色默认样式为TransparentScrollBar 背景颜色将被根 Grid 覆盖。因此,您只需更改根网格的背景颜色即可更改 ScrollBar 背景颜色。

用法

  <SolidColorBrush x:Key="ScrollBarBackgroundBrush" Color="Red" />
  <SolidColorBrush x:Key="ScrollBarPanningBackgroundBrush" Color="Blue" />
  <Style TargetType="ScrollBar">
      <Setter Property="MinWidth" Value="7" />
      <Setter Property="MinHeight" Value="7" />
      <Setter Property="Background" Value="Transparent" />
      <Setter Property="Foreground" Value="Transparent" />
      <Setter Property="BorderBrush" Value="Transparent" />
      <Setter Property="IsTabStop" Value="False" />
      <Setter Property="Template">
          <Setter.Value>
              <ControlTemplate TargetType="ScrollBar">
                  <Grid x:Name="Root" Background="{StaticResource ScrollBarBackgroundBrush}">
                      <Grid x:Name="HorizontalPanningRoot" MinWidth="53">
                          <Rectangle
                              x:Name="HorizontalPanningThumb"
                              Height="2.4"
                              MinWidth="7"
                              HorizontalAlignment="Left"
                              AutomationProperties.AccessibilityView="Raw"
                              Fill="{StaticResource ScrollBarPanningBackgroundBrush}" />
                      </Grid>
                      <Grid x:Name="VerticalPanningRoot" MinHeight="53">
                          <Rectangle
                              x:Name="VerticalPanningThumb"
                              Width="2.4"
                              MinHeight="7"
                              VerticalAlignment="Top"
                              AutomationProperties.AccessibilityView="Raw"
                              Fill="{StaticResource ScrollBarPanningBackgroundBrush}" />
                      </Grid>
                      <VisualStateManager.VisualStateGroups>
                          <VisualStateGroup x:Name="CommonStates">
                              <VisualState x:Name="Normal" />
                              <VisualState x:Name="PointerOver" />
                              <VisualState x:Name="Disabled">
                                  <Storyboard>
                                      <DoubleAnimation
                                          Storyboard.TargetName="Root"
                                          Storyboard.TargetProperty="Opacity"
                                          To="0.5"
                                          Duration="0" />
                                  </Storyboard>
                              </VisualState>
                          </VisualStateGroup>
                          <VisualStateGroup x:Name="ScrollingIndicatorStates">
                              <VisualState x:Name="TouchIndicator">
                                  <Storyboard>
                                      <FadeInThemeAnimation Storyboard.TargetName="HorizontalPanningRoot" />
                                      <FadeInThemeAnimation Storyboard.TargetName="VerticalPanningRoot" />
                                  </Storyboard>
                              </VisualState>
                              <VisualState x:Name="MouseIndicator" />
                              <VisualState x:Name="NoIndicator">
                                  <Storyboard>
                                      <FadeOutThemeAnimation BeginTime="0" Storyboard.TargetName="HorizontalPanningRoot" />
                                      <FadeOutThemeAnimation BeginTime="0" Storyboard.TargetName="VerticalPanningRoot" />
                                  </Storyboard>
                              </VisualState>
                          </VisualStateGroup>
                      </VisualStateManager.VisualStateGroups>
                  </Grid>
              </ControlTemplate>
          </Setter.Value>
      </Setter>
  </Style>

设置根网格背景颜色为红色。