You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
32 lines
777 B
32 lines
777 B
1 year ago
|
using Avalonia.Input;
|
||
|
using StabilityMatrix.Avalonia.ViewModels;
|
||
|
|
||
|
namespace StabilityMatrix.Avalonia.Controls;
|
||
|
|
||
|
public abstract class DropTargetUserControlBase : UserControlBase
|
||
|
{
|
||
|
protected DropTargetUserControlBase()
|
||
|
{
|
||
|
AddHandler(DragDrop.DropEvent, DropHandler);
|
||
|
AddHandler(DragDrop.DragOverEvent, DragOverHandler);
|
||
|
|
||
|
DragDrop.SetAllowDrop(this, true);
|
||
|
}
|
||
|
|
||
|
private void DragOverHandler(object? sender, DragEventArgs e)
|
||
|
{
|
||
|
if (DataContext is IDropTarget dropTarget)
|
||
|
{
|
||
|
dropTarget.DragOver(sender, e);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
private void DropHandler(object? sender, DragEventArgs e)
|
||
|
{
|
||
|
if (DataContext is IDropTarget dropTarget)
|
||
|
{
|
||
|
dropTarget.Drop(sender, e);
|
||
|
}
|
||
|
}
|
||
|
}
|