DragAndDrop core

This commit is contained in:
FrigaT
2026-01-18 16:33:35 +03:00
parent 9ea82af329
commit 79bdd8bc62
229 changed files with 21214 additions and 2494 deletions

View File

@@ -0,0 +1,153 @@
<ResourceDictionary
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<!-- Стиль для элементов с поддержкой перетаскивания -->
<Style x:Key="Lattice.DragDrop.DragSourceStyle" TargetType="Control">
<Setter Property="Background" Value="{ThemeResource Lattice.Brush.Background.Secondary}" />
<Setter Property="BorderBrush" Value="{ThemeResource Lattice.Brush.Border.Primary}" />
<Setter Property="BorderThickness" Value="{ThemeResource Lattice.BorderThickness.Thin}" />
<Setter Property="Padding" Value="{ThemeResource Lattice.Spacing.Medium}" />
<Setter Property="CornerRadius" Value="{ThemeResource Lattice.CornerRadius.Small}" />
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="Control">
<Border
x:Name="RootBorder"
Background="{TemplateBinding Background}"
BorderBrush="{TemplateBinding BorderBrush}"
BorderThickness="{TemplateBinding BorderThickness}"
CornerRadius="{TemplateBinding CornerRadius}"
Padding="{TemplateBinding Padding}">
<ContentPresenter x:Name="ContentPresenter" />
<VisualStateManager.VisualStateGroups>
<VisualStateGroup x:Name="DragDropStates">
<VisualState x:Name="Normal" />
<VisualState x:Name="Dragging">
<VisualState.Setters>
<Setter Target="RootBorder.Opacity" Value="{ThemeResource Lattice.Opacity.Drag}" />
<Setter Target="RootBorder.RenderTransform">
<Setter.Value>
<ScaleTransform ScaleX="0.95" ScaleY="0.95" />
</Setter.Value>
</Setter>
<Setter Target="RootBorder.Background">
<Setter.Value>
<SolidColorBrush Color="{ThemeResource Lattice.Color.Accent}" Opacity="0.1" />
</Setter.Value>
</Setter>
</VisualState.Setters>
</VisualState>
<VisualState x:Name="DragOver">
<VisualState.Setters>
<Setter Target="RootBorder.Background">
<Setter.Value>
<SolidColorBrush Color="{ThemeResource Lattice.Color.Accent}" Opacity="0.2" />
</Setter.Value>
</Setter>
<Setter Target="RootBorder.BorderBrush">
<Setter.Value>
<SolidColorBrush Color="{ThemeResource Lattice.Color.Accent}" />
</Setter.Value>
</Setter>
</VisualState.Setters>
</VisualState>
</VisualStateGroup>
</VisualStateManager.VisualStateGroups>
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
<!-- Стиль для целей сброса -->
<Style x:Key="Lattice.DragDrop.DropTargetStyle" TargetType="Control">
<Setter Property="Background" Value="{ThemeResource Lattice.Brush.Background.Tertiary}" />
<Setter Property="BorderBrush" Value="{ThemeResource Lattice.Brush.Border.Secondary}" />
<Setter Property="BorderThickness" Value="{ThemeResource Lattice.BorderThickness.Medium}" />
<Setter Property="Padding" Value="{ThemeResource Lattice.Spacing.Large}" />
<Setter Property="CornerRadius" Value="{ThemeResource Lattice.CornerRadius.Medium}" />
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="Control">
<Border
x:Name="RootBorder"
Background="{TemplateBinding Background}"
BorderBrush="{TemplateBinding BorderBrush}"
BorderThickness="{TemplateBinding BorderThickness}"
CornerRadius="{TemplateBinding CornerRadius}"
Padding="{TemplateBinding Padding}">
<ContentPresenter x:Name="ContentPresenter" />
<VisualStateManager.VisualStateGroups>
<VisualStateGroup x:Name="DropTargetStates">
<VisualState x:Name="Normal" />
<VisualState x:Name="DragOver">
<VisualState.Setters>
<Setter Target="RootBorder.Background">
<Setter.Value>
<SolidColorBrush Color="{ThemeResource Lattice.Color.Accent}" Opacity="0.1" />
</Setter.Value>
</Setter>
<Setter Target="RootBorder.BorderBrush">
<Setter.Value>
<SolidColorBrush Color="{ThemeResource Lattice.Color.Accent}" />
</Setter.Value>
</Setter>
<Setter Target="RootBorder.BorderThickness" Value="3" />
</VisualState.Setters>
</VisualState>
<VisualState x:Name="DropValid">
<VisualState.Setters>
<Setter Target="RootBorder.Background">
<Setter.Value>
<SolidColorBrush Color="{ThemeResource Lattice.Color.Success}" Opacity="0.1" />
</Setter.Value>
</Setter>
<Setter Target="RootBorder.BorderBrush">
<Setter.Value>
<SolidColorBrush Color="{ThemeResource Lattice.Color.Success}" />
</Setter.Value>
</Setter>
</VisualState.Setters>
</VisualState>
<VisualState x:Name="DropInvalid">
<VisualState.Setters>
<Setter Target="RootBorder.Background">
<Setter.Value>
<SolidColorBrush Color="{ThemeResource Lattice.Color.Error}" Opacity="0.1" />
</Setter.Value>
</Setter>
<Setter Target="RootBorder.BorderBrush">
<Setter.Value>
<SolidColorBrush Color="{ThemeResource Lattice.Color.Error}" />
</Setter.Value>
</Setter>
</VisualState.Setters>
</VisualState>
</VisualStateGroup>
</VisualStateManager.VisualStateGroups>
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
<!-- Бруши для визуальной обратной связи -->
<SolidColorBrush x:Key="Lattice.DragDrop.DragOverBackgroundBrush"
Color="{ThemeResource Lattice.Color.Accent}"
Opacity="0.3" />
<SolidColorBrush x:Key="Lattice.DragDrop.DragOverBorderBrush"
Color="{ThemeResource Lattice.Color.Accent}" />
<SolidColorBrush x:Key="Lattice.DragDrop.DropValidBrush"
Color="{ThemeResource Lattice.Color.Success}"
Opacity="0.5" />
<SolidColorBrush x:Key="Lattice.DragDrop.DropInvalidBrush"
Color="{ThemeResource Lattice.Color.Error}"
Opacity="0.5" />
</ResourceDictionary>