2017-02-26 16 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スタイルは機能しませんが、スタイルによってはスタイルが良好です。

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#コードとは関係がありますか? scrollBarの色のみを変更したい – Naduxa

+1

c#コードを使用してスクロールバーの背景色を変更するのは簡単ではありません。 scrollBarの色の色のみを変更したい場合。デフォルトの[style](https://msdn.microsoft.com/en-us/library/windows/apps/mt299150.aspx)の 'root'グリッドの背景色のみを変更できます。 –

+0

ありがとう! – Naduxa

関連する問題