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>