aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Visual_Studio/Scripting/Tango.Scripting.Editors/Snippets/Snippet.cs
blob: 0006261fb09300ea3e97dc84bee2a86f3e7992f1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)

using System;
using System.Collections.Generic;
using System.Windows.Documents;

using Tango.Scripting.Editors.Document;
using Tango.Scripting.Editors.Editing;
using Tango.Scripting.Editors.Utils;

namespace Tango.Scripting.Editors.Snippets
{
	/// <summary>
	/// A code snippet that can be inserted into the text editor.
	/// </summary>
	[Serializable]
	public class Snippet : SnippetContainerElement
	{
		/// <summary>
		/// Inserts the snippet into the text area.
		/// </summary>
		public void Insert(TextArea textArea)
		{
			if (textArea == null)
				throw new ArgumentNullException("textArea");
			
			ISegment selection = textArea.Selection.SurroundingSegment;
			int insertionPosition = textArea.Caret.Offset;
			
			if (selection != null) // if something is selected
				// use selection start instead of caret position,
				// because caret could be at end of selection or anywhere inside.
				// Removal of the selected text causes the caret position to be invalid.
				insertionPosition = selection.Offset + TextUtilities.GetWhitespaceAfter(textArea.Document, selection.Offset).Length;
			
			InsertionContext context = new InsertionContext(textArea, insertionPosition);
			
			using (context.Document.RunUpdate()) {
				if (selection != null)
					textArea.Document.Remove(insertionPosition, selection.EndOffset - insertionPosition);
				Insert(context);
				context.RaiseInsertionCompleted(EventArgs.Empty);
			}
		}
	}
}
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
                    xmlns:converters="clr-namespace:MaterialDesignThemes.Wpf.Converters;assembly=MaterialDesignThemes.Wpf"
                    xmlns:editors="clr-namespace:Tango.AutoComplete.Editors;assembly=Tango.AutoComplete"
                    xmlns:dragAndDrop="clr-namespace:Tango.DragAndDrop;assembly=Tango.DragAndDrop"
                    xmlns:sys="clr-namespace:System;assembly=mscorlib"
                    xmlns:local="clr-namespace:Tango.MachineStudio.Common.Resources">
    <ResourceDictionary.MergedDictionaries>
        <!-- MahApps.Metro resource dictionaries. Make sure that all file names are Case Sensitive! -->
        <!-- Accent and AppTheme setting -->
        <ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Controls.xaml">
        </ResourceDictionary>
        <ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Fonts.xaml">
        </ResourceDictionary>
        <ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Colors.xaml">
        </ResourceDictionary>
        <ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Accents/BaseLight.xaml">
        </ResourceDictionary>
        <!--Material Design-->
        <ResourceDictionary Source="pack://application:,,,/MaterialDesignThemes.Wpf;component/Themes/MaterialDesignTheme.Light.xaml">
        </ResourceDictionary>
        <ResourceDictionary Source="pack://application:,,,/MaterialDesignThemes.Wpf;component/Themes/MaterialDesignTheme.Defaults.xaml">
        </ResourceDictionary>
        <ResourceDictionary Source="pack://application:,,,/MaterialDesignColors;component/Themes/Recommended/Primary/materialdesigncolor.lightblue.xaml">
        </ResourceDictionary>
        <ResourceDictionary Source="pack://application:,,,/MaterialDesignColors;component/Themes/Recommended/Accent/materialdesigncolor.yellow.xaml">
        </ResourceDictionary>
        <ResourceDictionary Source="pack://application:,,,/MaterialDesignThemes.Wpf;component/Themes/MaterialDesignTheme.Button.xaml">
        </ResourceDictionary>
        <ResourceDictionary Source="pack://application:,,,/MaterialDesignThemes.Wpf;component/Themes/MaterialDesignTheme.CheckBox.xaml">
        </ResourceDictionary>
        <ResourceDictionary Source="pack://application:,,,/MaterialDesignThemes.Wpf;component/Themes/MaterialDesignTheme.ListBox.xaml">
        </ResourceDictionary>
        <ResourceDictionary Source="pack://application:,,,/MaterialDesignThemes.Wpf;component/Themes/MaterialDesignTheme.PopupBox.xaml">
        </ResourceDictionary>
        <ResourceDictionary Source="pack://application:,,,/MaterialDesignThemes.Wpf;component/Themes/MaterialDesignTheme.RadioButton.xaml">
        </ResourceDictionary>
        <ResourceDictionary Source="pack://application:,,,/MaterialDesignThemes.Wpf;component/Themes/MaterialDesignTheme.ToggleButton.xaml">
        </ResourceDictionary>
        <ResourceDictionary Source="pack://application:,,,/MaterialDesignThemes.Wpf;component/Themes/materialdesigntheme.TextBlock.xaml">
        </ResourceDictionary>
        <ResourceDictionary Source="pack://application:,,,/MaterialDesignThemes.Wpf;component/Themes/materialdesigntheme.Label.xaml">
        </ResourceDictionary>
        <ResourceDictionary Source="pack://application:,,,/MaterialDesignThemes.Wpf;component/Themes/materialdesigntheme.Slider.xaml">
        </ResourceDictionary>
        <ResourceDictionary Source="pack://application:,,,/MaterialDesignThemes.Wpf;component/Themes/materialdesigntheme.ProgressBar.xaml"/>

        <ResourceDictionary Source="GradientOffsetSlider.xaml" />

        <!--MahApps Brushes-->
        <ResourceDictionary>
            <SolidColorBrush x:Key="HighlightBrush" Color="{DynamicResource Primary700}" />
            <SolidColorBrush x:Key="AccentColorBrush" Color="{DynamicResource Primary500}" />
            <SolidColorBrush x:Key="AccentColorBrush2" Color="{DynamicResource Primary400}" />
            <SolidColorBrush x:Key="AccentColorBrush3" Color="{DynamicResource Primary300}" />
            <SolidColorBrush x:Key="AccentColorBrush4" Color="{DynamicResource Primary200}" />
            <SolidColorBrush x:Key="WindowTitleColorBrush" Color="{DynamicResource Primary700}" />
            <SolidColorBrush x:Key="AccentSelectedColorBrush" Color="{DynamicResource Primary500Foreground}" />
            <LinearGradientBrush x:Key="ProgressBrush" EndPoint="0.001,0.5" StartPoint="1.002,0.5">
                <GradientStop Color="{DynamicResource Primary700}" Offset="0" />
                <GradientStop Color="{DynamicResource Primary300}" Offset="1" />
            </LinearGradientBrush>
            <SolidColorBrush x:Key="CheckmarkFill" Color="{DynamicResource Primary500}" />
            <SolidColorBrush x:Key="RightArrowFill" Color="{DynamicResource Primary500}" />
            <SolidColorBrush x:Key="IdealForegroundColorBrush" Color="{DynamicResource Primary500Foreground}" />
            <SolidColorBrush x:Key="IdealForegroundDisabledBrush" Color="{DynamicResource Primary500}" Opacity="0.4" />
        </ResourceDictionary>
        
        <!--Fonts-->
        <ResourceDictionary>
            <FontFamily x:Key="digital-7">../Fonts/#digital-7</FontFamily>
        </ResourceDictionary>

        <!--Styles-->
        <ResourceDictionary>

            <BooleanToVisibilityConverter x:Key="BoolToVisConverter" />
            <converters:TextFieldHintVisibilityConverter x:Key="TextFieldHintVisibilityConverter" />

            <Style TargetType="editors:AutoCompleteTextBox" >
                <Setter Property="Focusable" Value="True" />
                <Setter Property="BorderThickness" Value="0 0 0 1"/>
                <Setter Property="BorderBrush" Value="{DynamicResource MaterialDesignTextBoxBorder}" />
                <Setter Property="Background" Value="Transparent"/>
                <!--<Setter Property="KeyboardNavigation.TabNavigation" Value="None"/>-->
                <Setter Property="HorizontalContentAlignment" Value="Left"/>
                <Setter Property="VerticalContentAlignment" Value="Top"/>
                <Setter Property="FocusVisualStyle" Value="{x:Null}"/>
                <Setter Property="AllowDrop" Value="true"/>
                <Setter Property="ScrollViewer.PanningMode" Value="VerticalFirst"/>
                <Setter Property="Stylus.IsFlicksEnabled" Value="False"/>
                <Setter Property="Validation.ErrorTemplate" Value="{DynamicResource MaterialDesignValidationErrorTemplate}"/>
                <Setter Property="Template">
                    <Setter.Value>
                        <ControlTemplate TargetType="{x:Type editors:AutoCompleteTextBox}">
                            <Grid>
                                <DockPanel>
                                    <ContentPresenter ContentSource="Icon"
                                                  x:Name="PART_Icon"
                                                  Visibility="{TemplateBinding IconVisibility}" />
                                    <Grid>
                                        <TextBlock x:Name="PART_Watermark"
                                               Text="{TemplateBinding Watermark}"
                                               Visibility="Collapsed"
                                               VerticalAlignment="Center"
                                               HorizontalAlignment="Left"
                                               Focusable="False"
                                               Foreground="Gray"
                                               Margin="3,0" />
                                        <TextBox x:Name="PART_Editor"
                                             Focusable="True"
                                             HorizontalAlignment="Stretch"
                                             VerticalAlignment="Center"
                                             Style="{StaticResource ResourceKey=MaterialDesignTextBox}"
                                             MaxLength="{Binding Path=MaxLength, RelativeSource={RelativeSource Mode=TemplatedParent}, Mode=TwoWay}"
                                             CharacterCasing="{Binding Path=CharacterCasing, RelativeSource={RelativeSource Mode=TemplatedParent}, Mode=TwoWay}"
                                             Text="{Binding Path=Text, RelativeSource={RelativeSource Mode=TemplatedParent}, Mode=TwoWay}" />
                                    </Grid>
                                </DockPanel>
                                <Popup x:Name="PART_Popup"
                                   IsOpen="{Binding Path=IsDropDownOpen, RelativeSource={RelativeSource Mode=TemplatedParent},Mode=TwoWay}"
                                   Width="{TemplateBinding ActualWidth}"
                                   HorizontalOffset="0"
                                   MinHeight="25"
                                   MaxHeight="600"
                                   AllowsTransparency="True"
                                   PopupAnimation="Slide"
                                   Focusable="False">
                                    <Border Background="White"
                                        BorderThickness="1"
                                        BorderBrush="#BDBDBD"
                                        CornerRadius="0"
                                        Padding="2">
                                        <Grid>
                                            <ListBox x:Name="PART_Selector"
                                                 ItemTemplate="{TemplateBinding ItemTemplate}"
                                                 ItemTemplateSelector="{TemplateBinding ItemTemplateSelector}"
                                                 Focusable="False"
                                                 BorderThickness="0"
                                                 MaxHeight="{Binding Path=MaxPopupHeight, RelativeSource={RelativeSource Mode=TemplatedParent},Mode=TwoWay}"
                                                 ScrollViewer.HorizontalScrollBarVisibility="Auto"
                                                 ScrollViewer.VerticalScrollBarVisibility="Auto"
                                                >
                                            </ListBox>
                                            <Border Visibility="{Binding Path=IsLoading, RelativeSource={RelativeSource Mode=TemplatedParent}, Converter={StaticResource   ResourceKey=BoolToVisConverter}}">
                                                <ContentPresenter ContentSource="LoadingContent"/>
                                            </Border>
                                        </Grid>
                                    </Border>
                                </Popup>

                            </Grid>
                            <!--</Border>-->
                            <ControlTemplate.Triggers>
                                <Trigger Property="Text"
                                 Value=""
                                 SourceName="PART_Editor">
                                    <Setter Property="Visibility"
                                    Value="Visible"
                                    TargetName="PART_Watermark" />
                                </Trigger>
                                <Trigger Property="IconPlacement"
                                 Value="Left">
                                    <Setter Property="DockPanel.Dock"
                                    Value="Left"
                                    TargetName="PART_Icon" />
                                </Trigger>
                                <Trigger Property="IconPlacement"
                                 Value="Right">
                                    <Setter Property="DockPanel.Dock"
                                    Value="Right"
                                    TargetName="PART_Icon" />
                                </Trigger>
                                <Trigger Property="Validation.HasError" Value="True">
                                    <Setter Property="BorderBrush"
                                    Value="Red"/>
                                </Trigger>
                            </ControlTemplate.Triggers>
                        </ControlTemplate>
                    </Setter.Value>
                </Setter>
            </Style>

            
            <!--Extensions-->

            <FontFamily x:Key="FontName">Segoe UI</FontFamily>
            <FontFamily x:Key="NotesFont">Lucida Console</FontFamily>

            <sys:Double x:Key="ExtraExtraLargeFontSize">28</sys:Double>
            <sys:Double x:Key="ExtraLargeFontSize">26</sys:Double>
            <sys:Double x:Key="LargeFontSize">20</sys:Double>
            <sys:Double x:Key="MediumFontSize">16</sys:Double>
            <sys:Double x:Key="SmallFontSize">14</sys:Double>
            <sys:Double x:Key="MiniFontSize">12</sys:Double>
            <sys:Double x:Key="TinyFontSize">9</sys:Double>

            <!--Colors-->
            <Color x:Key="borderColor">Silver</Color>
            <Color x:Key="graphGridLinesColor">#FFE9E9E9</Color>
            <Color x:Key="graphsMarkerColor">Gray</Color>
            <Color x:Key="materialColor">#03A9F4</Color>

            <!--Brushes-->
            <SolidColorBrush x:Key="borderBrush" Color="{StaticResource borderColor}"></SolidColorBrush>
            <SolidColorBrush x:Key="graphGridLinesBrush" Color="{StaticResource graphGridLinesColor}"></SolidColorBrush>
            <SolidColorBrush x:Key="BlackBrush" Color="#545454"></SolidColorBrush>

            <SolidColorBrush x:Key="graphGridLinesLightBrush" Color="{StaticResource graphGridLinesColor}"></SolidColorBrush>
            <SolidColorBrush x:Key="graphGridLinesDarkBrush" Color="#FF2E2E2E"></SolidColorBrush>

            <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0"  x:Key="graphBackgroundLight">
                <GradientStop Color="White"/>
                <GradientStop Color="#FFE9E9E9" Offset="1"/>
            </LinearGradientBrush>

            <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0"  x:Key="graphBackgroundDark">
                <GradientStop Color="Black"/>
                <GradientStop Color="#FF333333" Offset="1"/>
            </LinearGradientBrush>

            <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0"  x:Key="graphBackground">
                <GradientStop Color="White"/>
                <GradientStop Color="#FFE9E9E9" Offset="1"/>
            </LinearGradientBrush>

            <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0"  x:Key="graphLabelBackground" Opacity="0.7">
                <GradientStop Color="White"/>
                <GradientStop Color="#FFD9D9D9" Offset="1"/>
            </LinearGradientBrush>

            <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0"  x:Key="graphLegendBackground" Opacity="0.7">
                <GradientStop Color="#FFE9E9E9"/>
                <GradientStop Color="#FFBDBDBD" Offset="1"/>
            </LinearGradientBrush>

            <SolidColorBrush Color="#FFF1F1F1" x:Key="topBarBackgroundBrush"></SolidColorBrush>
            <!--Brushes-->

            <!--Graph Label-->
            <Style x:Key="graphLabel" TargetType="Label">
                <Style.Setters>
                    <Setter Property="IsHitTestVisible" Value="False"></Setter>
                    <Setter Property="Margin" Value="-1 -1 0 0"></Setter>
                    <Setter Property="HorizontalAlignment" Value="Left"></Setter>
                    <Setter Property="VerticalAlignment" Value="Top"></Setter>
                    <Setter Property="Padding" Value="0"></Setter>
                    <Setter Property="ContentTemplate">
                        <Setter.Value>
                            <DataTemplate>
                                <Border Width="Auto" Padding="0 0 20 0" Height="25" BorderBrush="{StaticResource AccentColorBrush}" BorderThickness="1" CornerRadius="0 0 30 0" Background="{StaticResource graphLabelBackground}" >
                                    <Label Margin="5 0 0 0" HorizontalAlignment="Left" VerticalAlignment="Center" FontSize="{StaticResource TinyFontSize}" Content="{Binding}"></Label>
                                </Border>
                            </DataTemplate>
                        </Setter.Value>
                    </Setter>
                </Style.Setters>
            </Style>
            <!--Graph Label-->


            <!--Graph Ticks Template-->
            <DataTemplate x:Key="graphTicksTemplate">
                <Ellipse Width="3" Height="3" Margin="0 0 0 0" Fill="{StaticResource AccentColorBrush}"></Ellipse>
            </DataTemplate>
            <!--Graph Ticks Template-->

            <DataTemplate x:Key="graphTooltipTemplate">
                <Border CornerRadius="5" BorderThickness="1" BorderBrush="White" Padding="8" MinWidth="50" Margin="20 0 20 0">
                    <Border.Background>
                        <SolidColorBrush Color="Black" Opacity="0.5"></SolidColorBrush>
                    </Border.Background>
                    <TextBlock Foreground="White" FontSize="10" HorizontalAlignment="Center" TextAlignment="Center" Text="{Binding StringFormat='0.000'}"></TextBlock>
                </Border>
            </DataTemplate>

            <!--Graph Legend Template-->
            <DataTemplate x:Key="graphLegendTemplate">
                <Border Width="20" Height="20" Margin="2">
                    <Grid>
                        <ToggleButton IsChecked="{Binding IsVisible}" Padding="0" Margin="0" Background="Transparent" BorderBrush="{x:Null}" BorderThickness="0">
                            <ToggleButton.Style>
                                <Style TargetType="ToggleButton">
                                    <Setter Property="Template">
                                        <Setter.Value>
                                            <ControlTemplate>
                                                <Grid Background="Transparent">
                                                    <Grid>
                                                        <Ellipse HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Fill="{StaticResource graphLegendBackground}" StrokeThickness="1">
                                                            <Ellipse.Style>
                                                                <Style TargetType="Ellipse">
                                                                    <Style.Triggers>
                                                                        <DataTrigger Binding="{Binding IsVisible}" Value="True">
                                                                            <Setter Property="Stroke" Value="{Binding Stroke}"></Setter>
                                                                        </DataTrigger>
                                                                        <DataTrigger Binding="{Binding IsVisible}" Value="False">
                                                                            <Setter Property="Stroke" Value="Transparent"></Setter>
                                                                        </DataTrigger>
                                                                    </Style.Triggers>
                                                                </Style>
                                                            </Ellipse.Style>
                                                        </Ellipse>
                                                        <TextBlock FontSize="8" Text="{Binding Name}" VerticalAlignment="Center" Foreground="Black" FontWeight="DemiBold" HorizontalAlignment="Center"></TextBlock>
                                                    </Grid>
                                                </Grid>
                                            </ControlTemplate>
                                        </Setter.Value>
                                    </Setter>
                                </Style>
                            </ToggleButton.Style>
                        </ToggleButton>
                    </Grid>
                </Border>
            </DataTemplate>
            <!--Graph Legend Template-->


            <Style TargetType="{x:Type ListBoxItem}" x:Key="basicListBoxItem">
                <Setter Property="Background" Value="Transparent"/>
                <Setter Property="BorderThickness" Value="0"></Setter>
                <Setter Property="FocusVisualStyle" Value="{x:Null}"></Setter>
                <Setter Property="HorizontalContentAlignment" Value="Stretch"></Setter>
                <Setter Property="Padding" Value="0"/>
                <Setter Property="Template">
                    <Setter.Value>
                        <ControlTemplate TargetType="{x:Type ListBoxItem}">
                            <Border x:Name="Bd" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="0" Background="{TemplateBinding Background}" Padding="0" SnapsToDevicePixels="true">
                                <ContentPresenter HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}"/>
                            </Border>
                            <ControlTemplate.Triggers>
                                <Trigger Property="IsSelected" Value="true">
                                    <Setter Property="Background" TargetName="Bd" Value="Transparent"/>
                                </Trigger>
                                <MultiTrigger>
                                    <MultiTrigger.Conditions>
                                        <Condition Property="IsSelected" Value="true"/>
                                        <Condition Property="Selector.IsSelectionActive" Value="false"/>
                                    </MultiTrigger.Conditions>
                                    <Setter Property="Background" TargetName="Bd" Value="Transparent"/>
                                </MultiTrigger>
                                <Trigger Property="IsEnabled" Value="false">
                                    <Setter Property="Foreground" Value="{DynamicResource {x:Static SystemColors.GrayTextBrushKey}}"/>
                                </Trigger>
                            </ControlTemplate.Triggers>
                        </ControlTemplate>
                    </Setter.Value>
                </Setter>
            </Style>

            <PathGeometry x:Key="CirclePath">M46.615 402.03c6.549 9.313 13.718 18.176 21.456 26.528l23.472-21.728c-6.767-7.3-13.038-15.045-18.768-23.184     L46.615 402.03z M32.007 254.83c0.178-112.07 83.047-206.811 194.096-221.904l-4.192-31.728C81.787 20.041-16.53 148.91 2.314 289.033     c3.942 29.31 12.932 57.716 26.573 83.957l28.368-14.784C40.563 326.311 31.897 290.828 32.007 254.83z M92.807 452.03c8.765 7.252 17.995 13.923 27.632 19.968l16.976-27.2c-8.448-5.292-16.535-11.139-24.208-17.504     L92.807 452.03z M361.761 21.742c-22.756-10.308-46.898-17.229-71.658-20.544l-4.192 31.728     c122.555 16.88 208.221 129.915 191.341 252.469C462.017 396.001 367.656 478.501 256.007 478.83     c-31.831 0.078-63.306-6.694-92.288-19.856l-13.216 29.152c128.788 58.337 280.484 1.225 338.821-127.563     C547.661 231.775 490.549 80.079 361.761 21.742z</PathGeometry>

            <Style TargetType="ContentControl" x:Key="numberBorder">
                <Style.Setters>
                    <Setter Property="Template">
                        <Setter.Value>
                            <ControlTemplate TargetType="ContentControl">
                                <Grid>
                                    <Viewbox>
                                        <Path Data="{StaticResource CirclePath}" Fill="{TemplateBinding Foreground}"></Path>
                                    </Viewbox>
                                    <ContentPresenter Content="{TemplateBinding Content}" />
                                </Grid>
                            </ControlTemplate>
                        </Setter.Value>
                    </Setter>
                </Style.Setters>
            </Style>

            <Style x:Key="emptyToggleButton" TargetType="ToggleButton">
                <Setter Property="Background" Value="Transparent" />
                <Setter Property="Template">
                    <Setter.Value>
                        <ControlTemplate TargetType="ToggleButton">
                            <Grid Background="{TemplateBinding Background}">
                                <ContentPresenter />
                            </Grid>
                        </ControlTemplate>
                    </Setter.Value>
                </Setter>
            </Style>

            <Style x:Key="emptyButton" TargetType="Button">
                <Setter Property="Background" Value="Transparent" />
                <Setter Property="Template">
                    <Setter.Value>
                        <ControlTemplate TargetType="Button">
                            <Grid Background="{TemplateBinding Background}">
                                <ContentPresenter />
                            </Grid>
                        </ControlTemplate>
                    </Setter.Value>
                </Setter>
            </Style>
            
            
            <!--Drag & Drop-->
            <Style x:Key="draggableGrid" TargetType="Grid">
                <Setter Property="RenderTransform">
                    <Setter.Value>
                        <ScaleTransform ScaleX="1" ScaleY="1"></ScaleTransform>
                    </Setter.Value>
                </Setter>
                <Setter Property="RenderTransformOrigin" Value="0.5,0.5"></Setter>
                <Setter Property="Background" Value="Transparent"></Setter>
                <Setter Property="dragAndDrop:DragAndDropService.Draggable" Value="True"></Setter>
                <Setter Property="dragAndDrop:DragAndDropService.DraggingSurface" Value="{Binding RelativeSource={RelativeSource AncestorType=UserControl},Path=DraggingSurface}"></Setter>
            </Style>

            <Style x:Key="droppableGrid" TargetType="Grid">
                <Setter Property="RenderTransform">
                    <Setter.Value>
                        <ScaleTransform ScaleX="1" ScaleY="1"></ScaleTransform>
                    </Setter.Value>
                </Setter>
                <Setter Property="RenderTransformOrigin" Value="0.5,0.5"></Setter>
                <Setter Property="Background" Value="Transparent"></Setter>
                <Setter Property="dragAndDrop:DragAndDropService.Droppable" Value="True"></Setter>
                <Setter Property="dragAndDrop:DragAndDropService.DraggingSurface" Value="{Binding RelativeSource={RelativeSource AncestorType=UserControl},Path=DraggingSurface}"></Setter>
                <Style.Triggers>
                    <Trigger Property="dragAndDrop:DragAndDropService.IsDraggableOver" Value="True">
                        <Setter Property="Opacity" Value="0.5"></Setter>
                        <Trigger.EnterActions>
                            <BeginStoryboard>
                                <Storyboard>
                                    <DoubleAnimation To="0.95" Duration="00:00:0.2" Storyboard.TargetProperty="RenderTransform.ScaleX"></DoubleAnimation>
                                    <DoubleAnimation To="0.95" Duration="00:00:0.2" Storyboard.TargetProperty="RenderTransform.ScaleY"></DoubleAnimation>
                                </Storyboard>
                            </BeginStoryboard>
                        </Trigger.EnterActions>
                        <Trigger.ExitActions>
                            <BeginStoryboard>
                                <Storyboard>
                                    <DoubleAnimation To="1" Duration="00:00:0.2" Storyboard.TargetProperty="RenderTransform.ScaleX"></DoubleAnimation>
                                    <DoubleAnimation To="1" Duration="00:00:0.2" Storyboard.TargetProperty="RenderTransform.ScaleY"></DoubleAnimation>
                                </Storyboard>
                            </BeginStoryboard>
                        </Trigger.ExitActions>
                    </Trigger>
                </Style.Triggers>
            </Style>

            <Style x:Key="draggableDroppableGrid" TargetType="Grid">
                <Setter Property="RenderTransform">
                    <Setter.Value>
                        <ScaleTransform ScaleX="1" ScaleY="1"></ScaleTransform>
                    </Setter.Value>
                </Setter>
                <Setter Property="RenderTransformOrigin" Value="0.5,0.5"></Setter>
                <Setter Property="Background" Value="Transparent"></Setter>
                <Setter Property="dragAndDrop:DragAndDropService.Draggable" Value="True"></Setter>
                <Setter Property="dragAndDrop:DragAndDropService.Droppable" Value="True"></Setter>
                <Setter Property="dragAndDrop:DragAndDropService.DraggingSurface" Value="{Binding RelativeSource={RelativeSource AncestorType=UserControl},Path=DraggingSurface}"></Setter>
                <Style.Triggers>
                    <Trigger Property="dragAndDrop:DragAndDropService.IsDraggableOver" Value="True">
                        <Setter Property="Opacity" Value="0.5"></Setter>
                        <Trigger.EnterActions>
                            <BeginStoryboard>
                                <Storyboard>
                                    <DoubleAnimation To="0.95" Duration="00:00:0.2" Storyboard.TargetProperty="RenderTransform.ScaleX"></DoubleAnimation>
                                    <DoubleAnimation To="0.95" Duration="00:00:0.2" Storyboard.TargetProperty="RenderTransform.ScaleY"></DoubleAnimation>
                                </Storyboard>
                            </BeginStoryboard>
                        </Trigger.EnterActions>
                        <Trigger.ExitActions>
                            <BeginStoryboard>
                                <Storyboard>
                                    <DoubleAnimation To="1" Duration="00:00:0.2" Storyboard.TargetProperty="RenderTransform.ScaleX"></DoubleAnimation>
                                    <DoubleAnimation To="1" Duration="00:00:0.2" Storyboard.TargetProperty="RenderTransform.ScaleY"></DoubleAnimation>
                                </Storyboard>
                            </BeginStoryboard>
                        </Trigger.ExitActions>
                    </Trigger>
                </Style.Triggers>
            </Style>
            <!--Drag & Drop-->

            <!--Extensions-->

        </ResourceDictionary>

    </ResourceDictionary.MergedDictionaries>
</ResourceDictionary>