Доработара WinUI реализация.
This commit is contained in:
@@ -7,8 +7,18 @@ using System;
|
||||
namespace Lattice.UI.DragDrop.WinUI.Controls;
|
||||
|
||||
/// <summary>
|
||||
/// Визуальный элемент для отображения перетаскиваемого объекта.
|
||||
/// Визуальный элемент, отображаемый во время перетаскивания.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// <para>
|
||||
/// Этот элемент отображает репрезентативное представление перетаскиваемых данных
|
||||
/// и следует за курсором мыши во время операции перетаскивания.
|
||||
/// </para>
|
||||
/// <para>
|
||||
/// Элемент поддерживает настройку прозрачности, смещения и угла поворота,
|
||||
/// а также анимированное появление и скрытие.
|
||||
/// </para>
|
||||
/// </remarks>
|
||||
public class DragAdorner : Control
|
||||
{
|
||||
/// <summary>
|
||||
@@ -66,8 +76,11 @@ public class DragAdorner : Control
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Получает или задает данные перетаскивания.
|
||||
/// Получает или задает данные, которые отображаются в визуальном элементе.
|
||||
/// </summary>
|
||||
/// <value>
|
||||
/// Объект данных для отображения. Обычно это те же данные, которые перетаскиваются.
|
||||
/// </value>
|
||||
public object DragData
|
||||
{
|
||||
get => GetValue(DragDataProperty);
|
||||
@@ -75,8 +88,13 @@ public class DragAdorner : Control
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Получает или задает смещение относительно курсора.
|
||||
/// Получает или задает смещение элемента относительно позиции курсора.
|
||||
/// </summary>
|
||||
/// <value>
|
||||
/// Смещение по осям X и Y. Используется для позиционирования элемента так,
|
||||
/// чтобы он не перекрывал курсор. Значение по умолчанию вычисляется автоматически
|
||||
/// на основе размера элемента.
|
||||
/// </value>
|
||||
public Point Offset
|
||||
{
|
||||
get => (Point)GetValue(OffsetProperty);
|
||||
@@ -111,9 +129,13 @@ public class DragAdorner : Control
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Обновляет позицию элемента относительно курсора.
|
||||
/// Обновляет позицию элемента в соответствии с позицией курсора.
|
||||
/// </summary>
|
||||
/// <param name="cursorPosition">Позиция курсора в экранных координатах.</param>
|
||||
/// <param name="cursorPosition">Текущая позиция курсора в экранных координатах.</param>
|
||||
/// <remarks>
|
||||
/// Метод применяет трансформации для позиционирования элемента с учетом
|
||||
/// заданного смещения и угла поворота.
|
||||
/// </remarks>
|
||||
public void UpdatePosition(Point cursorPosition)
|
||||
{
|
||||
var transform = new TranslateTransform
|
||||
|
||||
@@ -7,8 +7,19 @@ using System.Linq;
|
||||
namespace Lattice.UI.DragDrop.WinUI.Controls;
|
||||
|
||||
/// <summary>
|
||||
/// Оверлей для отображения визуальных элементов перетаскивания.
|
||||
/// Оверлейный слой для отображения всех визуальных элементов перетаскивания.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// <para>
|
||||
/// Этот элемент добавляется поверх всего содержимого окна и содержит:
|
||||
/// - Drag-визуализации (элементы, следующие за курсором)
|
||||
/// - Drop-превью (подсветка областей сброса)
|
||||
/// </para>
|
||||
/// <para>
|
||||
/// Элемент имеет <see cref="Canvas.IsHitTestVisible"/> = false, чтобы не перехватывать
|
||||
/// пользовательский ввод во время операций перетаскивания.
|
||||
/// </para>
|
||||
/// </remarks>
|
||||
public class DragDropOverlay : Canvas
|
||||
{
|
||||
private readonly List<UIElement> _dragVisuals = new();
|
||||
|
||||
@@ -8,8 +8,12 @@ using Windows.UI;
|
||||
namespace Lattice.UI.DragDrop.WinUI.Controls;
|
||||
|
||||
/// <summary>
|
||||
/// Визуальный элемент для предварительного просмотра области сброса.
|
||||
/// Визуальный элемент для подсветки области сброса.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Этот элемент отображается вокруг целевого элемента при наведении перетаскиваемого
|
||||
/// объекта для визуального указания возможности сброса.
|
||||
/// </remarks>
|
||||
[TemplateVisualState(Name = "Normal", GroupName = "CommonStates")]
|
||||
[TemplateVisualState(Name = "Highlighted", GroupName = "CommonStates")]
|
||||
public class DropPreviewAdorner : Control
|
||||
@@ -54,8 +58,11 @@ public class DropPreviewAdorner : Control
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Получает или задает цвет предварительного просмотра.
|
||||
/// Получает или задает цвет подсветки области сброса.
|
||||
/// </summary>
|
||||
/// <value>
|
||||
/// Цвет границы и фона подсветки. Значение по умолчанию берется из ресурсов темы.
|
||||
/// </value>
|
||||
public Color PreviewColor
|
||||
{
|
||||
get => (Color)GetValue(PreviewColorProperty);
|
||||
@@ -81,9 +88,12 @@ public class DropPreviewAdorner : Control
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Показывает элемент с указанными границами.
|
||||
/// Показывает элемент подсветки для указанной области.
|
||||
/// </summary>
|
||||
/// <param name="bounds">Границы для отображения.</param>
|
||||
/// <param name="bounds">Границы области для подсветки.</param>
|
||||
/// <remarks>
|
||||
/// Метод позиционирует элемент по указанным границам и запускает анимацию появления.
|
||||
/// </remarks>
|
||||
public void Show(Core.Geometry.Rect bounds)
|
||||
{
|
||||
Width = bounds.Width;
|
||||
@@ -124,9 +134,9 @@ public class DropPreviewAdorner : Control
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Обновляет позицию элемента.
|
||||
/// Обновляет позицию и размер элемента подсветки.
|
||||
/// </summary>
|
||||
/// <param name="bounds">Новые границы.</param>
|
||||
/// <param name="bounds">Новые границы области для подсветки.</param>
|
||||
public void UpdatePosition(Core.Geometry.Rect bounds)
|
||||
{
|
||||
if (RenderTransform is TranslateTransform transform)
|
||||
|
||||
Reference in New Issue
Block a user