Articles in this section
Category / Section

How to customize the template of the drag providers of WPF DockingManager?

2 mins read

The DragProviders of WPF DockingManager can be customized using CenterDragProvider, LeftDragPRovider, RightDragProvider, BottomDragProvider and TopDragProvider properties with desired Templates. The same has been explained in below code snippet,

MainWindow.Xaml

<Window.Resources>
  <ResourceDictionary>
    <ResourceDictionary.MergedDictionaries>
      <ResourceDictionary Source="DragProviders.xaml"/>
    </ResourceDictionary.MergedDictionaries>
  </ResourceDictionary>
</Window.Resources>
<Grid>
  <Syncfusion:DockingManager x:Name="DockingManager" UseDocumentContainer="True"
             DockFill="True" 
             LeftDragProvider="{StaticResource LeftDragProviderTemplate}"
             RightDragProvider="{StaticResource RightDragProviderTemplate}"
             BottomDragProvider="{StaticResource BottomDragProviderTemplate}"
             TopDragProvider="{StaticResource TopDragProviderTemplate}"
             CenterDragProvider="{StaticResource CenterDragProviderTemplate}">
    <ContentControl x:Name="contentcontrol" Syncfusion:DockingManager.Header="Window1" Syncfusion:DockingManager.State="Dock" />
    <ContentControl x:Name="contentcontrol2" Syncfusion:DockingManager.Header="Window2" Syncfusion:DockingManager.State="Dock"/>
    <ContentControl x:Name="contentcontrol3" Syncfusion:DockingManager.Header="Window3" Syncfusion:DockingManager.State="Dock"/>
  </Syncfusion:DockingManager>
</Grid>

DragProviders.xaml:

ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:Syncfusion="http://schemas.syncfusion.com/wpf"
    xmlns:sys="clr-namespace:System;assembly=mscorlib">
    
    <!-- Control template for CenterDragProvider -->
    <ControlTemplate x:Key="CenterDragProviderTemplate" TargetType="{x:Type 
          ContentControl}">
        <Grid>
            <Grid.RowDefinitions>
                <RowDefinition Height="32" />
                <RowDefinition Height="29" />
                <RowDefinition Height="32" />
            </Grid.RowDefinitions>
            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="32" />
                <ColumnDefinition Width="29" />
                <ColumnDefinition Width="32" />
            </Grid.ColumnDefinitions>
            <Image Name="TopImg" Grid.Column="1" Grid.Row="0" Width="29" Height="32" 
             Syncfusion:DockPreviewManagerVS2005.ProviderAction="Top" Source="pack://application:,,,/Syncfusion.Tools.WPF;component/Framework/DockingManager/Resources/DockPreviewVS2005Top.png" />
            <Image Name="LeftImg" Grid.Column="0" Grid.Row="1" Width="32" Height="29" Syncfusion:DockPreviewManagerVS2005.ProviderAction="Left" Source="pack://application:,,,/Syncfusion.Tools.WPF;component/Framework/DockingManager/Resources/DockPreviewVS2005Left.png" />
            <Image Name="CenterImg" Grid.Column="0" Grid.Row="0" Width="41" Height="41"
        Grid.ColumnSpan="3" Grid.RowSpan="3" Panel.ZIndex="-1" 
                 VerticalAlignment="Center" HorizontalAlignment="Center"
  Syncfusion:DockPreviewManagerVS2005.ProviderAction="Center" 
 Source="pack://application:,,,/Syncfusion.Tools.WPF;component/Framework/DockingM
               anager/Resources/DockPreviewVS2005Center.png" />
            <Image Name="RightImg" Grid.Column="2" Grid.Row="1" Width="32" Height="29" 
  Syncfusion:DockPreviewManagerVS2005.ProviderAction="Right" 
 Source="pack://application:,,,/Syncfusion.Tools.WPF;component/Framework/DockingM
            anager/Resources/DockPreviewVS2005Right.png" />
            <Image Name="BottomImg" Grid.Column="1" Grid.Row="2" Width="29" Height="32" 
  Syncfusion:DockPreviewManagerVS2005.ProviderAction="Bottom" 
 Source="pack://application:,,,/Syncfusion.Tools.WPF;component/Framework/DockingManager/Resources/DockPreviewVS2005Bottom.png" />
        </Grid>
        <ControlTemplate.Triggers>
            <DataTrigger Binding="{Binding Path=IsTopEnable, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type Syncfusion:DockPreviewMainButtonVS2005}}}" Value="False" >
                <Setter TargetName="TopImg" Property="Visibility" Value="Collapsed"/>
            </DataTrigger>
            <DataTrigger Binding="{Binding Path=IsLeftEnable, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type Syncfusion:DockPreviewMainButtonVS2005}}}" Value="False" >
                <Setter TargetName="LeftImg" Property="Visibility" Value="Collapsed"/>
            </DataTrigger>
            <DataTrigger Binding="{Binding Path=IsTabbedEnable, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type Syncfusion:DockPreviewMainButtonVS2005}}}" Value="False" >
                <Setter TargetName="CenterImg" Property="Visibility" Value="Collapsed"/>
            </DataTrigger>
            <DataTrigger Binding="{Binding Path=IsRightEnable, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type Syncfusion:DockPreviewMainButtonVS2005}}}" Value="False" >
                <Setter TargetName="RightImg" Property="Visibility" Value="Collapsed"/>
            </DataTrigger>
            <DataTrigger Binding="{Binding Path=IsBottomEnable, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type Syncfusion:DockPreviewMainButtonVS2005}}}" Value="False" >
                <Setter TargetName="BottomImg" Property="Visibility" Value="Collapsed"/>
            </DataTrigger>
            <DataTrigger Binding="{Binding Path=CenterButtonActiveSide, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type Syncfusion:DockPreviewMainButtonVS2005}}}" Value="Top" >
                <Setter TargetName="TopImg" Property="Source" Value="pack://application:,,,/Syncfusion.Tools.WPF;component/Framework/DockingManager/Resources/DockPreviewVS2005TopOver.png"/>
            </DataTrigger>
            <DataTrigger Binding="{Binding Path=CenterButtonActiveSide, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type Syncfusion:DockPreviewMainButtonVS2005}}}" Value="Left" >
                <Setter TargetName="LeftImg" Property="Source" Value="pack://application:,,,/Syncfusion.Tools.WPF;component/Framework/DockingManager/Resources/DockPreviewVS2005LeftOver.png"/>
            </DataTrigger>
            <DataTrigger Binding="{Binding Path=IsDisableCenter, RelativeSource={RelativeSource AncestorType={x:Type Syncfusion:DockPreviewMainButtonVS2005}}}" Value="True">
                <Setter TargetName="CenterImg" Property="Source" Value="pack://application:,,,/Syncfusion.Tools.WPF;component/Framework/DockingManager/Resources/DockPreviewVS2005CenterDisable.png"/>
            </DataTrigger>
            <MultiDataTrigger>
                <MultiDataTrigger.Conditions>
                    <Condition Binding="{Binding Path=CenterButtonActiveSide, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type Syncfusion:DockPreviewMainButtonVS2005}}}" Value="Tabbed" />
                    <Condition Binding="{Binding Path=IsDisableCenter, RelativeSource={RelativeSource AncestorType={x:Type Syncfusion:DockPreviewMainButtonVS2005}}}" Value="False" />
                </MultiDataTrigger.Conditions>
                <Setter TargetName="CenterImg" Property="Source" Value="pack://application:,,,/Syncfusion.Tools.WPF;component/Framework/DockingManager/Resources/DockPreviewVS2005CenterOver.png"/>
            </MultiDataTrigger>
            <DataTrigger Binding="{Binding Path=CenterButtonActiveSide, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type Syncfusion:DockPreviewMainButtonVS2005}}}" Value="Right" >
                <Setter TargetName="RightImg" Property="Source" Value="pack://application:,,,/Syncfusion.Tools.WPF;component/Framework/DockingManager/Resources/DockPreviewVS2005RightOver.png"/>
            </DataTrigger>
            <DataTrigger Binding="{Binding Path=CenterButtonActiveSide, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type Syncfusion:DockPreviewMainButtonVS2005}}}" Value="Bottom" >
                <Setter TargetName="BottomImg" Property="Source" Value="pack://application:,,,/Syncfusion.Tools.WPF;component/Framework/DockingManager/Resources/DockPreviewVS2005BottomOver.png"/>
            </DataTrigger>
        </ControlTemplate.Triggers>
    </ControlTemplate>
 
 <!-- Control template for TopDragProvider -->
    <ControlTemplate x:Key="TopDragProviderTemplate" TargetType="{x:Type ContentControl}">
        <Image Name="Img" Width="29" Height="32" Syncfusion:DockPreviewManagerVS2005.ProviderAction="GlobalTop" Source="pack://application:,,,/Syncfusion.Tools.WPF;component/Framework/DockingManager/Resources/DockPreviewVS2005GlobalTop.png" />
        <ControlTemplate.Triggers>
            <DataTrigger Binding="{Binding Path=IsSideButtonActive, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type Syncfusion:DockPreviewMainButtonVS2005}}}" Value="true">
                <Setter TargetName="Img" Property="Source" Value="pack://application:,,,/Syncfusion.Tools.WPF;component/Framework/DockingManager/Resources/DockPreviewVS2005GlobalTopOver.png"/>
            </DataTrigger>
        </ControlTemplate.Triggers>
    </ControlTemplate>
 
    <!-- Control template for LeftDragProvider -->
    <ControlTemplate x:Key="LeftDragProviderTemplate" TargetType="{x:Type ContentControl}">
        <Image Name="Img" Width="32" Height="29" Syncfusion:DockPreviewManagerVS2005.ProviderAction="GlobalLeft" Source="pack://application:,,,/Syncfusion.Tools.WPF;component/Framework/DockingManager/Resources/DockPreviewVS2005GlobalLeft.png" />
        <ControlTemplate.Triggers>
            <DataTrigger Binding="{Binding Path=IsSideButtonActive, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type Syncfusion:DockPreviewMainButtonVS2005}}}" Value="true">
                <Setter TargetName="Img" Property="Source" Value="pack://application:,,,/Syncfusion.Tools.WPF;component/Framework/DockingManager/Resources/DockPreviewVS2005GlobalLeftOver.png"/>
            </DataTrigger>
        </ControlTemplate.Triggers>
    </ControlTemplate>
 
    <!-- Control template for RightDragProvider -->
    <ControlTemplate x:Key="RightDragProviderTemplate" TargetType="{x:Type ContentControl}">
        <Image Name="Img" Width="32" Height="29" Syncfusion:DockPreviewManagerVS2005.ProviderAction="GlobalRight" Source="pack://application:,,,/Syncfusion.Tools.WPF;component/Framework/DockingManager/Resources/DockPreviewVS2005GlobalRight.png" />
        <ControlTemplate.Triggers>
            <DataTrigger Binding="{Binding Path=IsSideButtonActive, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type Syncfusion:DockPreviewMainButtonVS2005}}}" Value="true">
                <Setter TargetName="Img" Property="Source" Value="pack://application:,,,/Syncfusion.Tools.WPF;component/Framework/DockingManager/Resources/DockPreviewVS2005GlobalRightOver.png"/>
            </DataTrigger>
        </ControlTemplate.Triggers>
    </ControlTemplate>
 
    <!-- Control template for BottomDragProvider -->
    <ControlTemplate x:Key="BottomDragProviderTemplate" TargetType="{x:Type ContentControl}">
        <Image Name="Img" Width="29" Height="32" Syncfusion:DockPreviewManagerVS2005.ProviderAction="GlobalBottom" Source="pack://application:,,,/Syncfusion.Tools.WPF;component/Framework/DockingManager/Resources/DockPreviewVS2005GlobalBottom.png" />
        <ControlTemplate.Triggers>
            <DataTrigger Binding="{Binding Path=IsSideButtonActive, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type Syncfusion:DockPreviewMainButtonVS2005}}}" Value="true">
                <Setter TargetName="Img" Property="Source" Value="pack://application:,,,/Syncfusion.Tools.WPF;component/Framework/DockingManager/Resources/DockPreviewVS2005GlobalBottomOver.png"/>
            </DataTrigger>
        </ControlTemplate.Triggers>
    </ControlTemplate>
</ResourceDictionary>

 

Customize dragging style of WPF DockingManager

Did you find this information helpful?
Yes
No
Help us improve this page
Please provide feedback or comments
Comments (0)
Please sign in to leave a comment
Access denied
Access denied