いつもお世話になっております。
現在、WPFのDataGrid内部のスクロールバーにスタイルを適用する方法を探しているのですが、
内部のスクロールバーの変更方法や仕様がわからず困っております。
下記のサイトを参考にして、データグリッド外のスクロールバーのスタイルは適用できました。
以下
参考にさせていただいたサイトのURLです。
http://gootara.org/library/2016/06/wpf-scb.html
###実現したいこと
DataGrid内部スクロールバーにスタイルを適用させたい ・カラムとスタイルは現在のものを維持したまま、スクロールバーだけ色・形を変更したい。
###適用したいソースコード
C#
1<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 2 xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 3 xmlns:sys="clr-namespace:System;assembly=mscorlib"> 4 <!-- ボタンの長さ --> 5 <sys:Double x:Key="ScrollBarRepeatButtonSize">15</sys:Double> 6 <!-- スクロールバーのマージン --> 7 <sys:Double x:Key="MarginSize">10</sys:Double> 8 <!-- スクロールバーの色--> 9 <SolidColorBrush x:Key="ScrollBarColorBrush" Color="DimGray" /> 10 <!-- トラック(レーン)の色 --> 11 <SolidColorBrush x:Key="ScrollBarTrackBrush" Color="LightPink" /> 12 13 <!-- 終端の三角ボタンのスタイル --> 14 <Style x:Key="ScrollBarRepeatButtonStyle" TargetType="{x:Type RepeatButton}"> 15 <Setter Property="Template"> 16 <Setter.Value> 17 <ControlTemplate TargetType="{x:Type RepeatButton}"> 18 <Border x:Name="Border" Background="{StaticResource ScrollBarColorBrush}" BorderThickness="1"/> 19 </ControlTemplate> 20 </Setter.Value> 21 </Setter> 22 </Style> 23 24 <!-- トラック(レーン)のスタイル --> 25 <Style x:Key="ScrollBarTrackStyle" TargetType="{x:Type RepeatButton}"> 26 <Setter Property="Template"> 27 <Setter.Value> 28 <ControlTemplate TargetType="{x:Type RepeatButton}"> 29 <Border Background="Transparent"/> 30 </ControlTemplate> 31 </Setter.Value> 32 </Setter> 33 </Style> 34 35 <!-- つまみのスタイル --> 36 <Style x:Key="ScrollBarThumbStyle" TargetType="{x:Type Thumb}"> 37 <Setter Property="Template"> 38 <Setter.Value> 39 <ControlTemplate TargetType="{x:Type Thumb}"> 40 <Border CornerRadius="15" Background="{StaticResource ScrollBarColorBrush}" BorderThickness="1"/> 41 </ControlTemplate> 42 </Setter.Value> 43 </Setter> 44 </Style> 45 46 <!-- カスタムスクロールバーのスタイル --> 47 <Style x:Key="CustomScrollBarStyle" TargetType="{x:Type ScrollBar}"> 48 <Setter Property="OverridesDefaultStyle" Value="true"/> 49 <Style.Triggers> 50 <!--縦向きのスクロールバー--> 51 <Trigger Property="Orientation" Value="Vertical"> 52 <Setter Property="Width" Value="10"/> 53 <Setter Property="Height" Value="Auto" /> 54 <Setter Property="Margin"> 55 <Setter.Value> 56 <Thickness Left="0" Top="{StaticResource MarginSize}" Right="{StaticResource MarginSize}" Bottom="{StaticResource MarginSize}" /> 57 </Setter.Value> 58 </Setter> 59 <Setter Property="Template"> 60 <Setter.Value> 61 <ControlTemplate> 62 <Grid> 63 <Grid.RowDefinitions> 64 <RowDefinition MaxHeight="{StaticResource ScrollBarRepeatButtonSize}"/> 65 <RowDefinition/> 66 <RowDefinition MaxHeight="{StaticResource ScrollBarRepeatButtonSize}"/> 67 </Grid.RowDefinitions> 68 <Border Grid.RowSpan="3" CornerRadius="30" Background="{StaticResource ScrollBarTrackBrush}" /> 69 <RepeatButton Grid.Row="0" Height="{StaticResource ScrollBarRepeatButtonSize}" Command="ScrollBar.LineUpCommand" /> 70 <Track x:Name="PART_Track" Grid.Row="1" IsDirectionReversed="true"> 71 <Track.DecreaseRepeatButton> 72 <RepeatButton Style="{StaticResource ScrollBarTrackStyle}" Command="ScrollBar.PageUpCommand" /> 73 </Track.DecreaseRepeatButton> 74 <Track.Thumb> 75 <Thumb Style="{StaticResource ScrollBarThumbStyle}" Margin="0,1,0,1"/> 76 </Track.Thumb> 77 <Track.IncreaseRepeatButton> 78 <RepeatButton Style="{StaticResource ScrollBarTrackStyle}" Command="ScrollBar.PageDownCommand" /> 79 </Track.IncreaseRepeatButton> 80 </Track> 81 <RepeatButton Grid.Row="2" Height="{StaticResource ScrollBarRepeatButtonSize}" Command="ScrollBar.LineDownCommand" /> 82 </Grid> 83 </ControlTemplate> 84 </Setter.Value> 85 </Setter> 86 </Trigger> 87 <!--横向きのスクロールバー--> 88 <Trigger Property="Orientation" Value="Horizontal"> 89 <Setter Property="Width" Value="Auto"/> 90 <Setter Property="Height" Value="10" /> 91 <Setter Property="Margin"> 92 <Setter.Value> 93 <Thickness Left="{StaticResource MarginSize}" Top="0" Right="{StaticResource MarginSize}" Bottom="{StaticResource MarginSize}" /> 94 </Setter.Value> 95 </Setter> 96 <Setter Property="Template"> 97 <Setter.Value> 98 <ControlTemplate> 99 <Grid> 100 <Grid.ColumnDefinitions> 101 <ColumnDefinition MaxWidth="{StaticResource ScrollBarRepeatButtonSize}"/> 102 <ColumnDefinition/> 103 <ColumnDefinition MaxWidth="{StaticResource ScrollBarRepeatButtonSize}"/> 104 </Grid.ColumnDefinitions> 105 <Border Grid.ColumnSpan="3" CornerRadius="0" Background="{StaticResource ScrollBarTrackBrush}" /> 106 <RepeatButton Grid.Column="0" Width="{StaticResource ScrollBarRepeatButtonSize}" Command="ScrollBar.LineLeftCommand"/> 107 <Track x:Name="PART_Track" Grid.Column="1" IsDirectionReversed="false"> 108 <Track.DecreaseRepeatButton> 109 <RepeatButton Style="{StaticResource ScrollBarTrackStyle}" Command="ScrollBar.PageLeftCommand" /> 110 </Track.DecreaseRepeatButton> 111 <Track.Thumb> 112 <Thumb Style="{StaticResource ScrollBarThumbStyle}" Margin="1,0,1,0"/> 113 </Track.Thumb> 114 <Track.IncreaseRepeatButton> 115 <RepeatButton Style="{StaticResource ScrollBarTrackStyle}" Command="ScrollBar.PageRightCommand" /> 116 </Track.IncreaseRepeatButton> 117 </Track> 118 <RepeatButton Grid.Column="2" Width="{StaticResource ScrollBarRepeatButtonSize}" Command="ScrollBar.LineRightCommand"/> 119 </Grid> 120 </ControlTemplate> 121 </Setter.Value> 122 </Setter> 123 </Trigger> 124 </Style.Triggers> 125 </Style> 126 127 <!-- カスタム ScrollViewer のスタイル --> 128 <Style x:Key="CustomScrollViewerStyle" TargetType="{x:Type ScrollViewer}"> 129 <Setter Property="Template"> 130 <Setter.Value> 131 <ControlTemplate TargetType="{x:Type ScrollViewer}"> 132 <Grid> 133 <Grid.ColumnDefinitions> 134 <ColumnDefinition/> 135 <ColumnDefinition Width="Auto"/> 136 </Grid.ColumnDefinitions> 137 <Grid.RowDefinitions> 138 <RowDefinition/> 139 <RowDefinition Height="Auto"/> 140 </Grid.RowDefinitions> 141 <ScrollContentPresenter Grid.Column="0" Grid.Row="0"> 142 <ScrollContentPresenter.Margin> 143 <Thickness Left="{StaticResource MarginSize}" Top="{StaticResource MarginSize}" Right="{StaticResource MarginSize}" Bottom="{StaticResource MarginSize}" /> 144 </ScrollContentPresenter.Margin> 145 </ScrollContentPresenter> 146 <ScrollBar x:Name="PART_VerticalScrollBar" Grid.Column="1" Grid.Row="0" Orientation="Vertical" Value="{TemplateBinding VerticalOffset}" Maximum="{TemplateBinding ScrollableHeight}" ViewportSize="{TemplateBinding ViewportHeight}" Visibility="{TemplateBinding ComputedVerticalScrollBarVisibility}" Style="{StaticResource CustomScrollBarStyle}"/> 147 <ScrollBar x:Name="PART_HorizontalScrollBar" Grid.Column="0" Grid.Row="1" Orientation="Horizontal" Value="{TemplateBinding HorizontalOffset}" Maximum="{TemplateBinding ScrollableWidth}" ViewportSize="{TemplateBinding ViewportWidth}" Visibility="{TemplateBinding ComputedHorizontalScrollBarVisibility}" Style="{StaticResource CustomScrollBarStyle}"/> 148 <Border Grid.Column="1" Grid.Row="1" /> 149 </Grid> 150 </ControlTemplate> 151 </Setter.Value> 152 </Setter> 153 </Style> 154</ResourceDictionary> 155
スタイル適用前のデータグリッド
![]
###補足情報(言語/FW/ツール等のバージョンなど)
.NetFramework 4.5
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/11/10 23:55
2020/11/11 00:04
2020/11/11 00:37
2020/11/11 02:59
2020/11/11 06:54 編集
2020/11/11 07:00
2020/11/11 09:59