Introduction
This control adds size adjustment functionality to elements of a DockPanel
in the same way a GridSplitter
can adjust the size of columns and rows in a Grid
. When resizing the parent container, the elements will be resized proportionally unless the ProportionalResize
property is set to False
.
Using the Code
Add the OpenSourceControls
namespace and add a DockPanelSplitter
control after each panel you want to adjust. The DockPanel.Dock
attribute controls which edge of the panel the splitter works on.
<Window x:Class="DockPanelSplitterDemo.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:osc="clr-namespace:OpenSourceControls"
Title="DockPanelSplitter demo" Height="400" Width="600">
<DockPanel>
<Grid Name="LeftPane" DockPanel.Dock="Left"
Width="200" MinWidth="40">
<Rectangle Fill="LightBlue"/>
</Grid>
<osc:DockPanelSplitter DockPanel.Dock="Left" Width="4"/>
<Grid Name="RightPane" DockPanel.Dock="Right" Width="80">
<Rectangle Fill="Yellow"/>
</Grid>
<osc:DockPanelSplitter DockPanel.Dock="Right" Width="4"/>
<Grid Name="TopPane" DockPanel.Dock="Top"
Height="80" MinHeight="20">
<Rectangle Fill="LightGreen"/>
</Grid>
<osc:DockPanelSplitter DockPanel.Dock="Top" Height="4"/>
<Grid Name="BottomPane" DockPanel.Dock="Bottom" Height="70">
<Rectangle Fill="LightPink"/>
</Grid>
<osc:DockPanelSplitter DockPanel.Dock="Bottom" Height="4"/>
<Grid Name="MainPane" Background="Coral" >
<Rectangle Fill="Coral"/>
</Grid>
</DockPanel>
</Window>
The proportional sizing mode can be turned off by setting the ProprtionalResize
dependency property to False
.
<osc:DockPanelSplitter DockPanel.Dock="Right" Width="4" ProportionalResize="False"/>
Links to Related Projects
- WpfContrib DockSplitter (cannot find the control in
ProportionalResize
dependency property to False
. Creating resizable panels with splitter bars (links don't work??)
- Thumb example
Future Enhancements
- Use the
Thumb
control instead of capturing mouse events
History
- March 21, 2009 - First post
- May 25, 2009 - Added proportional resizing
- August 09, 2009 - Changed to custom control, added template demo, constrained size on client area