2Sep/090
GridSplitter style – Add a grip
The grid splitter on WPF is very useful, but not easy to style. I found some code to do this. VERY useful!
Horizontal:
<LinearGradientBrush StartPoint="0,0" EndPoint="0,1" x:Key="panelBackgroundBrush">
<LinearGradientBrush.GradientStops>
<GradientStop Color="#FFE3EFFF" Offset="0" />
<GradientStop Color="#FFAFD2FF" Offset="1" />
</LinearGradientBrush.GradientStops>
</LinearGradientBrush>
<Style x:Key="gridSplitterStyle" TargetType="{x:Type GridSplitter}">
<Setter Property="FrameworkElement.Height" Value="8"/>
<Setter Property="TextElement.Foreground" Value="#FF204D89" />
<Setter Property="Border.BorderBrush" Value="#FF6593CF" />
<Setter Property="Panel.Background" Value="{StaticResource panelBackgroundBrush}" />
<Setter Property="Border.BorderThickness" Value="0,1,0,0" />
<Setter Property="UIElement.SnapsToDevicePixels" Value="True" />
<Setter Property="UIElement.Focusable" Value="False" />
<Setter Property="Control.Padding" Value="7,7,7,7" />
<Setter Property="FrameworkElement.Cursor" Value="SizeNS" />
<Setter Property="Control.Template">
<Setter.Value>
<ControlTemplate>
<Border BorderThickness="{TemplateBinding Border.BorderThickness}" BorderBrush="{TemplateBinding Border.BorderBrush}" Background="{TemplateBinding Panel.Background}">
<Border BorderThickness="1,1,0,0" BorderBrush="{StaticResource panelBackgroundBrush}">
<Canvas Width="19" Height="3">
<Rectangle Fill="{StaticResource panelBackgroundBrush}" Width="2" Height="2" Canvas.Left="1" Canvas.Top="0" />
<Rectangle Fill="{StaticResource panelBackgroundBrush}" Width="2" Height="2" Canvas.Left="5" Canvas.Top="0" />
<Rectangle Fill="{StaticResource panelBackgroundBrush}" Width="2" Height="2" Canvas.Left="9" Canvas.Top="0" />
<Rectangle Fill="{StaticResource panelBackgroundBrush}" Width="2" Height="2" Canvas.Left="13" Canvas.Top="0" />
<Rectangle Fill="{StaticResource panelBackgroundBrush}" Width="2" Height="2" Canvas.Left="17" Canvas.Top="0" />
<Rectangle Fill="{TemplateBinding TextElement.Foreground}" Width="2" Height="2" Canvas.Left="0" Canvas.Top="0" />
<Rectangle Fill="{TemplateBinding TextElement.Foreground}" Width="2" Height="2" Canvas.Left="4" Canvas.Top="0" />
<Rectangle Fill="{TemplateBinding TextElement.Foreground}" Width="2" Height="2" Canvas.Left="8" Canvas.Top="0" />
<Rectangle Fill="{TemplateBinding TextElement.Foreground}" Width="2" Height="2" Canvas.Left="12" Canvas.Top="0" />
<Rectangle Fill="{TemplateBinding TextElement.Foreground}" Width="2" Height="2" Canvas.Left="16" Canvas.Top="0" />
</Canvas>
</Border>
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
Vertical:
<LinearGradientBrush StartPoint="0,0" EndPoint="0,1" x:Key="panelBackgroundBrush2">
<LinearGradientBrush.GradientStops>
<GradientStop Color="#FFE3EFFF" Offset="0" />
<GradientStop Color="#FFAFD2FF" Offset="1" />
</LinearGradientBrush.GradientStops>
</LinearGradientBrush>
<Style x:Key="gridSplitterVerticalStyle">
<Setter Property="FrameworkElement.Height" Value="8"/>
<Setter Property="TextElement.Foreground" Value="#FF204D89" />
<Setter Property="Border.BorderBrush" Value="#FF6593CF" />
<Setter Property="Panel.Background" Value="{StaticResource panelBackgroundBrush2}" />
<Setter Property="Border.BorderThickness" Value="0,1,0,0" />
<Setter Property="UIElement.SnapsToDevicePixels" Value="True" />
<Setter Property="UIElement.Focusable" Value="False" />
<Setter Property="Control.Padding" Value="7,7,7,7" />
<Setter Property="FrameworkElement.Cursor" Value="SizeWE" />
<Setter Property="Control.Template">
<Setter.Value>
<ControlTemplate>
<Border BorderThickness="{TemplateBinding Border.BorderThickness}" BorderBrush="{TemplateBinding Border.BorderBrush}" Background="{TemplateBinding Panel.Background}">
<Border BorderThickness="1,1,0,0" BorderBrush="{StaticResource panelBackgroundBrush2}">
<Canvas Width="3" Height="19">
<Rectangle Fill="{StaticResource panelBackgroundBrush2}" Width="2" Height="2" Canvas.Top="1" Canvas.Left="0" />
<Rectangle Fill="{StaticResource panelBackgroundBrush2}" Width="2" Height="2" Canvas.Top="5" Canvas.Left="0" />
<Rectangle Fill="{StaticResource panelBackgroundBrush2}" Width="2" Height="2" Canvas.Top="9" Canvas.Left="0" />
<Rectangle Fill="{StaticResource panelBackgroundBrush2}" Width="2" Height="2" Canvas.Top="13" Canvas.Left="0" />
<Rectangle Fill="{StaticResource panelBackgroundBrush2}" Width="2" Height="2" Canvas.Top="17" Canvas.Left="0" />
<Rectangle Fill="{TemplateBinding TextElement.Foreground}" Width="2" Height="2" Canvas.Top="0" Canvas.Left="0" />
<Rectangle Fill="{TemplateBinding TextElement.Foreground}" Width="2" Height="2" Canvas.Top="4" Canvas.Left="0" />
<Rectangle Fill="{TemplateBinding TextElement.Foreground}" Width="2" Height="2" Canvas.Top="8" Canvas.Left="0" />
<Rectangle Fill="{TemplateBinding TextElement.Foreground}" Width="2" Height="2" Canvas.Top="12" Canvas.Left="0" />
<Rectangle Fill="{TemplateBinding TextElement.Foreground}" Width="2" Height="2" Canvas.Top="16" Canvas.Left="0" />
</Canvas>
</Border>
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>