Click here to Skip to main content
15,896,111 members
Articles / Desktop Programming / WPF

Simple Visual Studio like Pane Resizing, Docking, and Collapsing

Rate me:
Please Sign up or sign in to vote.
4.94/5 (15 votes)
28 Feb 2013CPOL13 min read 67.3K   5.9K   64  
Learn to create a simple custom control that allows users to dock.
  • DockableVsExample-noexe.zip
    • DockableVsExample
      • .cov
      • _ReSharper.DockableVsExample
        • AspFileDataCache.dat
        • BuildScriptCache
          • .crc
          • .version
          • 2
            • 2b968c50.dat
        • ConditionalNames
          • .crc
          • .version
          • 2
            • 2b968c50.dat
        • JavaScriptCache
          • .crc
          • .version
          • 2
            • 2b968c50.dat
        • JSTest
          • .crc
          • .version
        • ModuleIds.xml
        • MVC
          • .crc
          • .version
        • NamedArguments
          • .crc
          • .version
          • 2
            • 2b968c50.dat
        • PersistenIdIndex.bin
        • RecentItems
          • RecentFiles.dat
        • Resources
          • .crc
          • .version
          • 0
            • 1d145dd1.dat
        • SymbolCache.bin
        • TagPrefixes
          • .crc
          • .version
        • TodoItems
          • .crc
          • .version
          • 2
            • 2b968c50.dat
        • WebSymbols
          • .crc
          • .version
        • WordIndex
          • .crc
          • .version
          • 2
            • 2b968c50.dat
        • XmlIndex
          • Accessibility.xml
            • 59F683E5.bin
            • C7A6AAD7.bin
          • Microsoft.Build.Framework.4.0.0.0.Nullness.Generated.xml
            • 91BD6FD3.bin
          • Microsoft.Build.Framework.xml
            • 5B4D04B5.bin
          • Microsoft.Build.Tasks.v4.0.4.0.0.0.Nullness.Generated.xml
            • AB623953.bin
          • Microsoft.Build.Tasks.v4.0.xml
            • 390E8A25.bin
          • Microsoft.Build.Utilities.v4.0.4.0.0.0.Nullness.Generated.xml
            • 07D57913.bin
          • Microsoft.Build.Utilities.v4.0.xml
            • 1A2D939D.bin
          • Microsoft.CSharp.4.0.0.0.Nullness.Generated.xml
            • 10F25633.bin
          • Microsoft.CSharp.xml
            • 1D407EB8.bin
          • Microsoft.VisualC.xml
            • 2F48D914.bin
          • mscorlib.4.0.0.0.Contracts.xml
            • 0DED0883.bin
          • mscorlib.4.0.0.0.Interfaces.Nullness.Generated.xml
            • 620DC5CB.bin
          • mscorlib.4.0.0.0.Nullness.Generated.xml
            • 772ECBB3.bin
          • mscorlib.4.0.0.0.Pure.xml
            • 6572C670.bin
          • mscorlib.I18n.xml
            • 366D6FC8.bin
          • mscorlib.Nullness.Manual.xml
            • A029C282.bin
          • mscorlib.ValueFlow.xml
            • 4E59B0BF.bin
          • mscorlib.xml
            • 05998BE8.bin
            • 743ADB6C.bin
            • 80BFF39E.bin
          • PresentationCore.4.0.0.0.Nullness.Generated.xml
            • 6892EAF3.bin
          • PresentationCore.xml
            • 6EEF5274.bin
            • 6F6FC046.bin
          • PresentationFramework.4.0.0.0.Nullness.Generated.xml
            • 5BD919D3.bin
          • PresentationFramework.4.0.0.0.Xaml.xml
            • 86321E7A.bin
          • PresentationFramework.Nullness.Manual.xml
            • 541B7CA2.bin
          • PresentationFramework.xml
            • 75940F93.bin
            • B6BE5621.bin
          • PresentationUI.4.0.0.0.Nullness.Generated.xml
            • DBA70613.bin
          • ReachFramework.4.0.0.0.Nullness.Generated.xml
            • A1074D33.bin
          • ReachFramework.xml
            • 450C246A.bin
            • CF31C018.bin
          • SMDiagnostics.4.0.0.0.Nullness.Generated.xml
            • 8E9945D3.bin
          • System.4.0.0.0.Contracts.xml
            • 7458FC03.bin
          • System.4.0.0.0.Nullness.Generated.xml
            • 5304AF33.bin
          • System.4.0.0.0.Pure.xml
            • 403889F0.bin
          • System.ComponentModel.DataAnnotations.4.0.0.0.Nullness.Generated.xml
            • EB11BC93.bin
          • System.ComponentModel.DataAnnotations.I18n.xml
            • E1E89968.bin
          • System.ComponentModel.DataAnnotations.xml
            • B9A8C76A.bin
          • System.Configuration.4.0.0.0.Contracts.xml
            • 8AA99CC3.bin
          • System.Configuration.4.0.0.0.Nullness.Generated.xml
            • 5C04A9F3.bin
          • System.Configuration.4.0.0.0.Pure.xml
            • A30FD330.bin
          • System.Configuration.Install.4.0.0.0.Contracts.xml
            • F6158D63.bin
          • System.Configuration.Install.4.0.0.0.Nullness.Generated.xml
            • 28353B53.bin
          • System.Configuration.Install.xml
            • 7FB1C71F.bin
          • System.Configuration.xml
            • 092A1070.bin
            • 3BFF1442.bin
          • System.Core.4.0.0.0.Contracts.xml
            • 9A69C6A3.bin
          • System.Core.4.0.0.0.Nullness.Generated.xml
            • 8E5F4293.bin
          • System.Core.4.0.0.0.Pure.xml
            • D7464B10.bin
          • System.Core.LinqTunnel.xml
            • 63F26974.bin
          • System.Core.Nullness.Manual.xml
            • 31BDD0E2.bin
          • System.Core.xml
            • 11686E5B.bin
            • 1C6B8C69.bin
          • System.Data.4.0.0.0.Contracts.xml
            • 68A7E423.bin
          • System.Data.4.0.0.0.Nullness.Generated.xml
            • 7A169013.bin
          • System.Data.4.0.0.0.Pure.xml
            • 595BF890.bin
          • System.Data.DataSetExtensions.4.0.0.0.Nullness.Generated.xml
            • DB866913.bin
          • System.Data.DataSetExtensions.I18n.xml
            • B16CE5E8.bin
          • System.Data.DataSetExtensions.xml
            • 561D2A14.bin
          • System.Data.Entity.4.0.0.0.Nullness.Generated.xml
            • 30E64393.bin
          • System.Data.Entity.xml
            • 9398E105.bin
          • System.Data.I18n.xml
            • 51BDCCE8.bin
          • System.Data.OracleClient.4.0.0.0.Nullness.Generated.xml
            • 9BDAABD3.bin
          • System.Data.OracleClient.xml
            • 27DDCE31.bin
          • System.Data.SqlXml.4.0.0.0.Nullness.Generated.xml
            • B9F432D3.bin
          • System.Data.SqlXml.xml
            • 0CFF57DB.bin
            • 48CF6F29.bin
          • System.Data.xml
            • 2535F582.bin
            • 7BF6DA70.bin
          • System.Deployment.4.0.0.0.Nullness.Generated.xml
            • B159D593.bin
          • System.Deployment.xml
            • 566A1F4B.bin
            • CC017739.bin
          • System.Design.4.0.0.0.Nullness.Generated.xml
            • 97CA2CD3.bin
          • System.Design.xml
            • 66D504B2.bin
          • System.DirectoryServices.4.0.0.0.Nullness.Generated.xml
            • 494E7693.bin
          • System.DirectoryServices.Protocols.4.0.0.0.Nullness.Generated.xml
            • CFA46BF3.bin
          • System.DirectoryServices.Protocols.xml
            • A1B5E32C.bin
          • System.DirectoryServices.xml
            • 14397267.bin
            • 88DA6355.bin
          • System.Drawing.4.0.0.0.Contracts.xml
            • 90ED1C03.bin
          • System.Drawing.4.0.0.0.Nullness.Generated.xml
            • 283CCF33.bin
          • System.Drawing.4.0.0.0.Pure.xml
            • 07B8A9F0.bin
          • System.Drawing.Design.4.0.0.0.Nullness.Generated.xml
            • EFA69853.bin
          • System.Drawing.Design.xml
            • E232227C.bin
          • System.Drawing.xml
            • 2F425360.bin
            • CD562AD2.bin
          • System.Dynamic.4.0.0.0.Nullness.Generated.xml
            • 8CC52453.bin
          • System.EnterpriseServices.4.0.0.0.Nullness.Generated.xml
            • C42E9193.bin
          • System.EnterpriseServices.xml
            • 484CBB5B.bin
            • BC835E69.bin
          • System.I18n.xml
            • E767B348.bin
          • System.Nullness.Manual.xml
            • AC02D602.bin
          • System.Numerics.4.0.0.0.Nullness.Generated.xml
            • 0D729213.bin
          • System.Numerics.xml
            • 4231948A.bin
            • F65D6778.bin
          • System.Printing.4.0.0.0.Nullness.Generated.xml
            • A17A3513.bin
          • System.Printing.xml
            • 703E5A63.bin
            • 9376C751.bin
          • System.Runtime.Caching.4.0.0.0.Nullness.Generated.xml
            • 8BB7FA53.bin
          • System.Runtime.Caching.xml
            • 6E34C19B.bin
          • System.Runtime.DurableInstancing.4.0.0.0.Nullness.Generated.xml
            • 94C6B993.bin
          • System.Runtime.DurableInstancing.xml
            • 3BFDDE45.bin
            • 952CDDB7.bin
          • System.Runtime.Remoting.4.0.0.0.Nullness.Generated.xml
            • 5A03BD53.bin
          • System.Runtime.Remoting.xml
            • 3CA70F41.bin
            • 99D48EF3.bin
          • System.Runtime.Serialization.4.0.0.0.Nullness.Generated.xml
            • 4774B3B3.bin
          • System.Runtime.Serialization.Attributes.xml
            • E749FA69.bin
          • System.Runtime.Serialization.Formatters.Soap.2.0.0.0.Contracts.xml
            • 6A729305.bin
          • System.Runtime.Serialization.Formatters.Soap.4.0.0.0.Contracts.xml
            • 4C2FB483.bin
          • System.Runtime.Serialization.Formatters.Soap.4.0.0.0.Nullness.Generated.xml
            • F932F7B3.bin
          • System.Runtime.Serialization.Formatters.Soap.xml
            • AC344D82.bin
            • C8E5DC30.bin
          • System.Runtime.Serialization.xml
            • 014E8BDC.bin
            • B677C06E.bin
          • System.Security.4.0.0.0.Contracts.xml
            • 203E41A3.bin
          • System.Security.4.0.0.0.Nullness.Generated.xml
            • F66E1D93.bin
          • System.Security.4.0.0.0.Pure.xml
            • 3CA1E610.bin
          • System.Security.xml
            • 02B7D304.bin
            • 55841E76.bin
          • System.ServiceProcess.4.0.0.0.Nullness.Generated.xml
            • 359B1C13.bin
          • System.ServiceProcess.xml
            • 2335E116.bin
          • System.Transactions.4.0.0.0.Nullness.Generated.xml
            • 3921BF93.bin
          • System.Transactions.xml
            • 377E8A05.bin
            • A0E212F7.bin
          • System.Web.4.0.0.0.Contracts.xml
            • 9CAD0083.bin
          • System.Web.4.0.0.0.Nullness.Generated.xml
            • 4965C3B3.bin
          • System.Web.4.0.0.0.Pure.xml
            • 4657BE70.bin
          • System.Web.ApplicationServices.4.0.0.0.Nullness.Generated.xml
            • 3969B1B3.bin
          • System.Web.ApplicationServices.xml
            • 331D36EA.bin
          • System.Web.Attributes.xml
            • C91B0A69.bin
          • System.Web.I18n.xml
            • DDDA67C8.bin
          • System.Web.RegularExpressions.xml
            • B6E517C5.bin
          • System.Web.Services.4.0.0.0.Nullness.Generated.xml
            • 30597093.bin
          • System.Web.Services.Attributes.xml
            • 336EB089.bin
          • System.Web.Services.xml
            • 057956D0.bin
          • System.Web.xml
            • 7F630C15.bin
            • C4EB8CF0.bin
          • System.Windows.Forms.4.0.0.0.Contracts.xml
            • 0AA1AF83.bin
          • System.Windows.Forms.4.0.0.0.Nullness.Generated.xml
            • E30F52B3.bin
          • System.Windows.Forms.4.0.0.0.Pure.xml
            • FDE30D70.bin
          • System.Windows.Forms.I18n.xml
            • 4286B6C8.bin
          • System.Windows.Forms.Manual.xml
            • 4EEF7F3C.bin
          • System.Windows.Forms.xml
            • 13FFA7C6.bin
            • 628A07B4.bin
          • System.Windows.Input.Manipulations.4.0.0.0.Nullness.Generated.xml
            • FDC406D3.bin
          • System.Windows.Input.Manipulations.xml
            • 2DA32DB7.bin
            • DB2249C5.bin
          • System.Xaml.4.0.0.0.Nullness.Generated.xml
            • A8037753.bin
          • System.Xaml.xml
            • B4FB056A.bin
            • C4D1BFD8.bin
          • System.Xml.4.0.0.0.Contracts.xml
            • 53D95363.bin
          • System.Xml.4.0.0.0.Nullness.Generated.xml
            • DD97C153.bin
          • System.Xml.4.0.0.0.Pure.xml
            • 5A1C7B50.bin
          • System.Xml.Attributes.xml
            • 09EED2C9.bin
          • System.Xml.I18n.xml
            • 8B551FA8.bin
          • System.Xml.Linq.4.0.0.0.Contracts.xml
            • 0FA00AA3.bin
          • System.Xml.Linq.4.0.0.0.Nullness.Generated.xml
            • 0EE20693.bin
          • System.Xml.Linq.4.0.0.0.Pure.xml
            • 9C820F10.bin
          • System.Xml.Linq.I18n.xml
            • A5756368.bin
          • System.Xml.Linq.xml
            • 315B32BF.bin
            • AD7A27CD.bin
          • System.Xml.xml
            • 48B5EA79.bin
            • EAFF084B.bin
          • System.xml
            • 13EB449C.bin
            • 74BB9F68.bin
            • C3B3EEEE.bin
          • UIAutomationProvider.4.0.0.0.Nullness.Generated.xml
            • 0F77E253.bin
          • UIAutomationProvider.xml
            • 0476AD9B.bin
          • UIAutomationTypes.4.0.0.0.Nullness.Generated.xml
            • D2732553.bin
          • UIAutomationTypes.xml
            • 822993E3.bin
            • AB13DD51.bin
          • WindowsBase.4.0.0.0.Nullness.Generated.xml
            • 08F51D53.bin
          • WindowsBase.4.0.0.0.Pure.xml
            • 2D08D750.bin
          • WindowsBase.xml
            • 2F308F93.bin
            • 30274CA1.bin
      • Controls
      • DockableVsExample.sln
      • DockableVsExample
  • DockableVsExample.zip
    • coverity.config
    • desktop-settings.xml
    • AspFileDataCache.dat
    • .crc
    • .version
    • 2b968c50.dat
    • .crc
    • .version
    • 2b968c50.dat
    • .crc
    • .version
    • 2b968c50.dat
    • JbPdbInfo
      • .crc
      • .version
      • ModuleIds.xml
      • .crc
      • .version
      • .crc
      • .version
      • 2b968c50.dat
      • PersistenIdIndex.bin
      • RecentFiles.dat
      • .crc
      • .version
      • 1d145dd1.dat
      • SymbolCache.bin
      • .crc
      • .version
      • .crc
      • .version
      • 2b968c50.dat
      • .crc
      • .version
      • .crc
      • .version
      • 2b968c50.dat
      • 59F683E5.bin
      • C7A6AAD7.bin
      • 91BD6FD3.bin
      • 5B4D04B5.bin
      • AB623953.bin
      • 390E8A25.bin
      • 07D57913.bin
      • 1A2D939D.bin
      • 10F25633.bin
      • 1D407EB8.bin
      • 2F48D914.bin
      • 0DED0883.bin
      • 620DC5CB.bin
      • 772ECBB3.bin
      • 6572C670.bin
      • 366D6FC8.bin
      • A029C282.bin
      • 4E59B0BF.bin
      • 05998BE8.bin
      • 743ADB6C.bin
      • 80BFF39E.bin
      • 6892EAF3.bin
      • 6EEF5274.bin
      • 6F6FC046.bin
      • 5BD919D3.bin
      • 86321E7A.bin
      • 541B7CA2.bin
      • 75940F93.bin
      • B6BE5621.bin
      • DBA70613.bin
      • A1074D33.bin
      • 450C246A.bin
      • CF31C018.bin
      • 8E9945D3.bin
      • 7458FC03.bin
      • 5304AF33.bin
      • 403889F0.bin
      • EB11BC93.bin
      • E1E89968.bin
      • B9A8C76A.bin
      • 8AA99CC3.bin
      • 5C04A9F3.bin
      • A30FD330.bin
      • F6158D63.bin
      • 28353B53.bin
      • 7FB1C71F.bin
      • 092A1070.bin
      • 3BFF1442.bin
      • 9A69C6A3.bin
      • 8E5F4293.bin
      • D7464B10.bin
      • 63F26974.bin
      • 31BDD0E2.bin
      • 11686E5B.bin
      • 1C6B8C69.bin
      • 68A7E423.bin
      • 7A169013.bin
      • 595BF890.bin
      • DB866913.bin
      • B16CE5E8.bin
      • 561D2A14.bin
      • 30E64393.bin
      • 9398E105.bin
      • 51BDCCE8.bin
      • 9BDAABD3.bin
      • 27DDCE31.bin
      • B9F432D3.bin
      • 0CFF57DB.bin
      • 48CF6F29.bin
      • 2535F582.bin
      • 7BF6DA70.bin
      • B159D593.bin
      • 566A1F4B.bin
      • CC017739.bin
      • 97CA2CD3.bin
      • 66D504B2.bin
      • 494E7693.bin
      • CFA46BF3.bin
      • A1B5E32C.bin
      • 14397267.bin
      • 88DA6355.bin
      • 90ED1C03.bin
      • 283CCF33.bin
      • 07B8A9F0.bin
      • EFA69853.bin
      • E232227C.bin
      • 2F425360.bin
      • CD562AD2.bin
      • 8CC52453.bin
      • C42E9193.bin
      • 484CBB5B.bin
      • BC835E69.bin
      • E767B348.bin
      • AC02D602.bin
      • 0D729213.bin
      • 4231948A.bin
      • F65D6778.bin
      • A17A3513.bin
      • 703E5A63.bin
      • 9376C751.bin
      • 8BB7FA53.bin
      • 6E34C19B.bin
      • 94C6B993.bin
      • 3BFDDE45.bin
      • 952CDDB7.bin
      • 5A03BD53.bin
      • 3CA70F41.bin
      • 99D48EF3.bin
      • 4774B3B3.bin
      • E749FA69.bin
      • 6A729305.bin
      • 4C2FB483.bin
      • F932F7B3.bin
      • AC344D82.bin
      • C8E5DC30.bin
      • 014E8BDC.bin
      • B677C06E.bin
      • 203E41A3.bin
      • F66E1D93.bin
      • 3CA1E610.bin
      • 02B7D304.bin
      • 55841E76.bin
      • 359B1C13.bin
      • 2335E116.bin
      • 3921BF93.bin
      • 377E8A05.bin
      • A0E212F7.bin
      • 9CAD0083.bin
      • 4965C3B3.bin
      • 4657BE70.bin
      • 3969B1B3.bin
      • 331D36EA.bin
      • C91B0A69.bin
      • DDDA67C8.bin
      • B6E517C5.bin
      • 30597093.bin
      • 336EB089.bin
      • 057956D0.bin
      • 7F630C15.bin
      • C4EB8CF0.bin
      • 0AA1AF83.bin
      • E30F52B3.bin
      • FDE30D70.bin
      • 4286B6C8.bin
      • 4EEF7F3C.bin
      • 13FFA7C6.bin
      • 628A07B4.bin
      • FDC406D3.bin
      • 2DA32DB7.bin
      • DB2249C5.bin
      • A8037753.bin
      • B4FB056A.bin
      • C4D1BFD8.bin
      • 53D95363.bin
      • DD97C153.bin
      • 5A1C7B50.bin
      • 09EED2C9.bin
      • 8B551FA8.bin
      • 0FA00AA3.bin
      • 0EE20693.bin
      • 9C820F10.bin
      • A5756368.bin
      • 315B32BF.bin
      • AD7A27CD.bin
      • 48B5EA79.bin
      • EAFF084B.bin
      • 13EB449C.bin
      • 74BB9F68.bin
      • C3B3EEEE.bin
      • 0F77E253.bin
      • 0476AD9B.bin
      • D2732553.bin
      • 822993E3.bin
      • AB13DD51.bin
      • 08F51D53.bin
      • 2D08D750.bin
      • 2F308F93.bin
      • 30274CA1.bin
      • bin
      • DockableVsExample.sln
      • DockableVsExample.suo
      • App.xaml
      • App.xaml.cs
      • Controls.dll
      • Controls.pdb
      • DockableVsExample.exe
      • DockableVsExample.pdb
      • DockableVsExample.vshost.exe
      • DockableVsExample.vshost.exe.manifest
      • DockableVsExample.csproj
      • Home-icon.png
      • MyIcon.ico
      • Next-icon.png
      • MainWindow.xaml
      • MainWindow.xaml.cs
      • obj
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
                    xmlns:local="clr-namespace:Controls;assembly=Controls">
    <Style TargetType="{x:Type local:LayeredGrid}">
        <Setter 
            Property="Template">
            <Setter.Value>
                <ControlTemplate>
                    <DockPanel 
                        VerticalAlignment="Stretch"
                        HorizontalAlignment="Stretch"
                        LastChildFill="True"
                        Name="PART_ParentPanel">
                        <DockPanel.BitmapEffect>
                            <BevelBitmapEffect  BevelWidth="15" EdgeProfile="BulgedUp"/>
                        </DockPanel.BitmapEffect>
                        <DockPanel.Resources>
                            <Color x:Key="PrimaryColor">CadetBlue</Color>
                            <Color x:Key="SecondaryColor">#CC0D1000</Color>
                            <SolidColorBrush x:Key="PrimaryBrush" Color="{StaticResource PrimaryColor}" />
                            <SolidColorBrush x:Key="TextBrush" Color="Black" />
                            <SolidColorBrush x:Key="DisabledColor" Color="#8CFFFFFF" />
                            <SolidColorBrush x:Key="BackgroundBrush" Color="#FFFFFFFF" />
                            <Style x:Key="buttonStyle" TargetType="{x:Type Button}">
                                <!--<Style.Triggers>
                                    <Trigger Property="IsMouseOver" Value="False">
                                        <Setter Property="Foreground" Value="Wheat">

                                        </Setter>
                                    </Trigger>
                                    <Trigger Property="IsMouseOver" Value="True">
                                        <Setter Property="FontWeight" Value="Bold"/>
                                    </Trigger>
                                </Style.Triggers>-->

                                <Setter Property="Foreground" Value="{StaticResource TextBrush}" />
                                <Setter Property="Background" Value="#00000000" />
                                <Setter Property="Padding" Value="5,4" />
                                <Setter Property="BorderBrush" Value="{StaticResource PrimaryBrush}" />
                                <Setter Property="Template">
                                    <Setter.Value>
                                        <ControlTemplate TargetType="Button">
                                            <Grid x:Name="Button_Normal">
                                                <Grid.RowDefinitions>
                                                    <RowDefinition Height="50*" />
                                                    <RowDefinition Height="50*" />
                                                </Grid.RowDefinitions>
                                                <VisualStateManager.VisualStateGroups>
                                                    <VisualStateGroup x:Name="FocusStates">
                                                        <VisualState x:Name="Unfocused" />
                                                        <VisualState x:Name="Focused">
                                                            <Storyboard>
                                                                <ColorAnimationUsingKeyFrames Duration="00:00:00.001" Storyboard.TargetName="InnerBorder" Storyboard.TargetProperty="(Border.BorderBrush).(SolidColorBrush.Color)">
                                                                    <SplineColorKeyFrame KeyTime="0" Value="#BF000000" />
                                                                </ColorAnimationUsingKeyFrames>
                                                            </Storyboard>
                                                        </VisualState>
                                                    </VisualStateGroup>
                                                    <VisualStateGroup x:Name="CommonStates">
                                                        <VisualStateGroup.Transitions>
                                                            <VisualTransition GeneratedDuration="00:00:00.3" />
                                                            <VisualTransition From="MouseOver" GeneratedDuration="00:00:00" To="Pressed" />
                                                            <VisualTransition From="MouseOver" GeneratedDuration="00:00:00.1" To="Normal" />
                                                        </VisualStateGroup.Transitions>
                                                        <VisualState x:Name="MouseOver">
                                                            <Storyboard>
                                                                <DoubleAnimationUsingKeyFrames Duration="00:00:00.001" Storyboard.TargetName="Background" Storyboard.TargetProperty="(UIElement.Opacity)">
                                                                    <SplineDoubleKeyFrame KeyTime="0" Value="1" />
                                                                </DoubleAnimationUsingKeyFrames>
                                                                <DoubleAnimationUsingKeyFrames Duration="00:00:00.001" Storyboard.TargetName="Highlight" Storyboard.TargetProperty="(UIElement.Opacity)">
                                                                    <SplineDoubleKeyFrame KeyTime="0" Value="1" />
                                                                </DoubleAnimationUsingKeyFrames>
                                                                <ColorAnimationUsingKeyFrames Duration="00:00:00.001" Storyboard.TargetName="Shadow" Storyboard.TargetProperty="(Border.Background).(GradientBrush.GradientStops)[1].(GradientStop.Color)">
                                                                    <SplineColorKeyFrame KeyTime="0" Value="#4B000000" />
                                                                </ColorAnimationUsingKeyFrames>
                                                                <DoubleAnimationUsingKeyFrames Duration="00:00:00.001" Storyboard.TargetName="Background" Storyboard.TargetProperty="(Border.Background).(GradientBrush.GradientStops)[0].(GradientStop.Offset)">
                                                                    <SplineDoubleKeyFrame KeyTime="0" Value=".01" />
                                                                </DoubleAnimationUsingKeyFrames>
                                                                <ColorAnimationUsingKeyFrames Duration="00:00:00.001" Storyboard.TargetName="Highlight" Storyboard.TargetProperty="(Border.Background).(GradientBrush.GradientStops)[1].(GradientStop.Color)">
                                                                    <SplineColorKeyFrame KeyTime="0" Value="CadetBlue" />
                                                                </ColorAnimationUsingKeyFrames>
                                                                <ColorAnimationUsingKeyFrames Duration="00:00:00.001" Storyboard.TargetName="contentPresenter" Storyboard.TargetProperty="(Control.Foreground).(SolidColorBrush.Color)">
                                                                    <SplineColorKeyFrame KeyTime="0" Value="Gold" />
                                                                </ColorAnimationUsingKeyFrames>
                                                            </Storyboard>
                                                        </VisualState>
                                                        <VisualState x:Name="Normal" >
                                                            <Storyboard>
                                                                <DoubleAnimationUsingKeyFrames Duration="00:00:00.001" Storyboard.TargetName="Background" Storyboard.TargetProperty="(UIElement.Opacity)">
                                                                    <SplineDoubleKeyFrame KeyTime="0" Value="0.7" />
                                                                </DoubleAnimationUsingKeyFrames>
                                                                <DoubleAnimationUsingKeyFrames Duration="00:00:00.001" Storyboard.TargetName="Background" Storyboard.TargetProperty="(Border.Background).(GradientBrush.GradientStops)[0].(GradientStop.Offset)">
                                                                    <SplineDoubleKeyFrame KeyTime="0" Value="0.5" />
                                                                </DoubleAnimationUsingKeyFrames>
                                                                <ColorAnimationUsingKeyFrames Duration="00:00:00.001" Storyboard.TargetName="White" Storyboard.TargetProperty="(Border.Background).(GradientBrush.GradientStops)[0].(GradientStop.Color)">
                                                                    <SplineColorKeyFrame KeyTime="0" Value="CadetBlue" />
                                                                </ColorAnimationUsingKeyFrames>
                                                                <ColorAnimationUsingKeyFrames Duration="00:00:00.001" Storyboard.TargetName="White" Storyboard.TargetProperty="(Border.Background).(GradientBrush.GradientStops)[1].(GradientStop.Color)">
                                                                    <SplineColorKeyFrame KeyTime="0" Value="#FFC8C8C8" />
                                                                </ColorAnimationUsingKeyFrames>
                                                                <ColorAnimationUsingKeyFrames Duration="00:00:00.001" Storyboard.TargetName="Highlight" Storyboard.TargetProperty="(Border.Background).(GradientBrush.GradientStops)[1].(GradientStop.Color)">
                                                                    <SplineColorKeyFrame KeyTime="0" Value="#4BFFFFF0" />
                                                                </ColorAnimationUsingKeyFrames>
                                                                <DoubleAnimationUsingKeyFrames Duration="00:00:00.001" Storyboard.TargetName="Highlight" Storyboard.TargetProperty="(UIElement.Opacity)">
                                                                    <SplineDoubleKeyFrame KeyTime="0" Value="0.8" />
                                                                </DoubleAnimationUsingKeyFrames>
                                                                <ColorAnimationUsingKeyFrames Duration="00:00:00.001" Storyboard.TargetName="contentPresenter" Storyboard.TargetProperty="(Control.Foreground).(SolidColorBrush.Color)">
                                                                    <SplineColorKeyFrame KeyTime="0" Value="LightGoldenrodYellow" />
                                                                </ColorAnimationUsingKeyFrames>
                                                            </Storyboard>
                                                        </VisualState>
                                                        <VisualState x:Name="Pressed">
                                                            <Storyboard>
                                                                <DoubleAnimationUsingKeyFrames Duration="00:00:00.001" Storyboard.TargetName="Background" Storyboard.TargetProperty="(UIElement.Opacity)">
                                                                    <SplineDoubleKeyFrame KeyTime="0" Value="0.6" />
                                                                </DoubleAnimationUsingKeyFrames>
                                                                <DoubleAnimationUsingKeyFrames Duration="00:00:00.001" Storyboard.TargetName="Background" Storyboard.TargetProperty="(Border.Background).(GradientBrush.GradientStops)[0].(GradientStop.Offset)">
                                                                    <SplineDoubleKeyFrame KeyTime="0" Value="0" />
                                                                </DoubleAnimationUsingKeyFrames>
                                                                <ColorAnimationUsingKeyFrames Duration="00:00:00.001" Storyboard.TargetName="White" Storyboard.TargetProperty="(Border.Background).(GradientBrush.GradientStops)[0].(GradientStop.Color)">
                                                                    <SplineColorKeyFrame KeyTime="0" Value="#FF000000" />
                                                                </ColorAnimationUsingKeyFrames>
                                                                <ColorAnimationUsingKeyFrames Duration="00:00:00.001" Storyboard.TargetName="White" Storyboard.TargetProperty="(Border.Background).(GradientBrush.GradientStops)[1].(GradientStop.Color)">
                                                                    <SplineColorKeyFrame KeyTime="0" Value="#FFC8C8C8" />
                                                                </ColorAnimationUsingKeyFrames>
                                                                <ColorAnimationUsingKeyFrames Duration="00:00:00.001" Storyboard.TargetName="Highlight" Storyboard.TargetProperty="(Border.Background).(GradientBrush.GradientStops)[1].(GradientStop.Color)">
                                                                    <SplineColorKeyFrame KeyTime="0" Value="#4BFFFFFF" />
                                                                </ColorAnimationUsingKeyFrames>
                                                                <DoubleAnimationUsingKeyFrames Duration="00:00:00.001" Storyboard.TargetName="Highlight" Storyboard.TargetProperty="(UIElement.Opacity)">
                                                                    <SplineDoubleKeyFrame KeyTime="0" Value="0.5" />
                                                                </DoubleAnimationUsingKeyFrames>
                                                                <ColorAnimationUsingKeyFrames Duration="00:00:00.001" Storyboard.TargetName="contentPresenter" Storyboard.TargetProperty="(Control.Foreground).(SolidColorBrush.Color)">
                                                                    <SplineColorKeyFrame KeyTime="0" Value="White" />
                                                                </ColorAnimationUsingKeyFrames>
                                                            </Storyboard>
                                                        </VisualState>
                                                        <VisualState x:Name="Disabled">
                                                            <Storyboard>
                                                                <DoubleAnimationUsingKeyFrames Duration="00:00:00.001" Storyboard.TargetName="contentPresenter" Storyboard.TargetProperty="(UIElement.Opacity)">
                                                                    <SplineDoubleKeyFrame KeyTime="0" Value="0.5" />
                                                                </DoubleAnimationUsingKeyFrames>
                                                                <DoubleAnimationUsingKeyFrames Duration="00:00:00.001" Storyboard.TargetName="Background" Storyboard.TargetProperty="(UIElement.Opacity)">
                                                                    <SplineDoubleKeyFrame KeyTime="0" Value="0.2" />
                                                                </DoubleAnimationUsingKeyFrames>
                                                                <ColorAnimationUsingKeyFrames Duration="00:00:00.001" Storyboard.TargetName="White" Storyboard.TargetProperty="(Border.BorderBrush).(SolidColorBrush.Color)">
                                                                    <SplineColorKeyFrame KeyTime="0" Value="#FFB1B1B1" />
                                                                </ColorAnimationUsingKeyFrames>
                                                                <ColorAnimationUsingKeyFrames Duration="00:00:00.001" Storyboard.TargetName="White" Storyboard.TargetProperty="(Border.Background).(GradientBrush.GradientStops)[0].(GradientStop.Color)">
                                                                    <SplineColorKeyFrame KeyTime="0" Value="#FFECECEC" />
                                                                </ColorAnimationUsingKeyFrames>
                                                                <ColorAnimationUsingKeyFrames Duration="00:00:00.001" Storyboard.TargetName="White" Storyboard.TargetProperty="(Border.Background).(GradientBrush.GradientStops)[1].(GradientStop.Color)">
                                                                    <SplineColorKeyFrame KeyTime="0" Value="#FFECECEC" />
                                                                </ColorAnimationUsingKeyFrames>
                                                            </Storyboard>
                                                        </VisualState>
                                                    </VisualStateGroup>
                                                </VisualStateManager.VisualStateGroups>
                                                <Border CornerRadius="0,0,0,0" Grid.RowSpan="2" x:Name="White" BorderBrush="#FFFFFDDD" BorderThickness="1.2">
                                                    <Border.Background>
                                                        <RadialGradientBrush>
                                                            <RadialGradientBrush.RelativeTransform>
                                                                <TransformGroup>
                                                                    <ScaleTransform CenterX="0.5" CenterY="0.5" ScaleX="1.35" ScaleY="1.35" />
                                                                </TransformGroup>
                                                            </RadialGradientBrush.RelativeTransform>
                                                            <GradientStop Color="#FFFFDDDD" Offset="0" />
                                                            <GradientStop Color="#FFFFFF00" Offset="1" />
                                                        </RadialGradientBrush>
                                                    </Border.Background>
                                                </Border>
                                                <Border BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="1.2" CornerRadius="0,0,0,0" x:Name="Background" Grid.RowSpan="2" Opacity="0.65">
                                                    <Border.Background>
                                                        <LinearGradientBrush EndPoint="0.5,1.0" StartPoint="0.5,0">
                                                            <GradientStop Color="{StaticResource PrimaryColor}" Offset="0.55" />
                                                            <GradientStop Color="{StaticResource SecondaryColor}" Offset="1" />
                                                        </LinearGradientBrush>
                                                    </Border.Background>
                                                </Border>
                                                <Border Background="{TemplateBinding Background}" BorderBrush="#5FFFFFDD" BorderThickness="1"  CornerRadius="0,0,0,0" x:Name="InnerBorder" Margin="1" Grid.RowSpan="2" />
                                                <Border CornerRadius="3.5,3.5,0,0" x:Name="Shadow" Margin="2" Grid.RowSpan="2">
                                                    <Border.OpacityMask>
                                                        <RadialGradientBrush>
                                                            <RadialGradientBrush.RelativeTransform>
                                                                <TransformGroup>
                                                                    <TranslateTransform X="0" Y="-0.5" />
                                                                </TransformGroup>
                                                            </RadialGradientBrush.RelativeTransform>
                                                            <GradientStop Color="#00FFFFFF" Offset="0.3" />
                                                            <GradientStop Color="#FFFFDDDD" Offset="1" />
                                                        </RadialGradientBrush>
                                                    </Border.OpacityMask>
                                                    <Border.Background>
                                                        <RadialGradientBrush>
                                                            <RadialGradientBrush.RelativeTransform>
                                                                <TransformGroup>
                                                                    <ScaleTransform CenterX="0.5" CenterY="0.5" ScaleX="1.75" ScaleY="2.25" />
                                                                    <TranslateTransform Y="0.65" />
                                                                </TransformGroup>
                                                            </RadialGradientBrush.RelativeTransform>
                                                            <GradientStop Color="#00000000" Offset="0.55" />
                                                            <GradientStop Color="#33000000" Offset="1" />
                                                        </RadialGradientBrush>
                                                    </Border.Background>
                                                </Border>
                                                <Border Margin="1,1,1,0" CornerRadius="0,0,0,0" x:Name="Highlight" Opacity="0.8" RenderTransformOrigin="0.5,1">
                                                    <Border.Background>
                                                        <RadialGradientBrush>
                                                            <RadialGradientBrush.RelativeTransform>
                                                                <TransformGroup>
                                                                    <ScaleTransform CenterX="0.5" CenterY="0.5" ScaleX="1.25" ScaleY="2" />
                                                                    <TranslateTransform Y="-0.6" />
                                                                </TransformGroup>
                                                            </RadialGradientBrush.RelativeTransform>
                                                            <GradientStop Color="#BFFFFFFF" Offset="0" />
                                                            <GradientStop Color="#4CFFFFFF" Offset="1" />
                                                        </RadialGradientBrush>
                                                    </Border.Background>
                                                </Border>
                                                <ContentPresenter x:Name="contentPresenter" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}" Margin="{TemplateBinding Padding}" RenderTransformOrigin="0.5,0.5" Grid.RowSpan="2" />
                                            </Grid>
                                        </ControlTemplate>
                                    </Setter.Value>
                                </Setter>
                            </Style>
                            <RadialGradientBrush 
                                x:Key="myColorfulLabelBrush"
                                RadiusX="0.5"
                                RadiusY="1"
                                >
                                <GradientStop Color="#CC0D1000" Offset="0.1"/>
                                <GradientStop Color="CadetBlue" Offset="0.9"/>
                            </RadialGradientBrush>
                            <RadialGradientBrush 
                                x:Key="myColorfulBorderBrush"
                                RadiusX="0.4"
                                RadiusY="0.6"
                                >
                                <GradientStop Color="#CC3D2614" Offset="0.3"/>
                                <GradientStop Color="Gold" Offset="0.8"/>
                            </RadialGradientBrush>
                        </DockPanel.Resources>
                        <StackPanel 
                            Name="PART_BottomCntl"
                            Background="{StaticResource myColorfulLabelBrush}"
                            Orientation="Horizontal" 
                            Panel.ZIndex="1"
                            DockPanel.Dock="Bottom">
                        </StackPanel>
                        <StackPanel 
                             Name="PART_LeftCntl"
                            Background="{StaticResource myColorfulLabelBrush}"
                            Orientation="Horizontal" 
                            DockPanel.Dock="Left">
                            <StackPanel.LayoutTransform>
                                <RotateTransform Angle="90"/>
                            </StackPanel.LayoutTransform>
                        </StackPanel>
                        <StackPanel 
                             Name="PART_RightCntl"
                            Background="{StaticResource myColorfulLabelBrush}"
                            Orientation="Horizontal" 
                            DockPanel.Dock="Right">
                            <StackPanel.LayoutTransform>
                                <RotateTransform Angle="90"/>
                            </StackPanel.LayoutTransform>

                        </StackPanel>
                        <Grid 
                            Name="PART_MasterGrid"
                            Grid.IsSharedSizeScope="True">
                        </Grid>
                    </DockPanel>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>
</ResourceDictionary>

By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.

If a file you wish to view isn't highlighted, and is a text file (not binary), please let us know and we'll add colourisation support for it.

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)


Written By
Software Developer
United States United States
This member has not yet provided a Biography. Assume it's interesting and varied, and probably something to do with programming.

Comments and Discussions