2017-02-26 111 views
2

我用C#UWP編寫。 ScrollBar造型不起作用,但一些ScrollViewer造型很好。滾動條的樣式不起作用

enter image description here

我後面的代碼:

 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); 

回答

4

我寫在C#UWP。 ScrollBar樣式不起作用,但某些樣式ScrollViewer樣式很好。

ScrollBar的背景顏色爲Transparent的默認樣式。 ScrollBar背景顏色將由根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> 

設置根網格背景顏色爲紅色。

enter image description here

+0

它可以用C#代碼嗎?我只想更改滾動條的顏色 – Naduxa

+1

使用c#代碼更改滾動條背景顏色並不容易。如果你只想改變scrollBar的顏色。您只能在默認[樣式](https://msdn.microsoft.com/en-us/library/windows/apps/mt299150.aspx)上更改'root'網格背景顏色。 –

+0

非常感謝! – Naduxa