독개

[Avalonia] Drop File

by #독개#

axaml에 Drop을 원하는 컨트롤에를 작성해준다 인텔리젼스 안되니 당황하지말것

DragDrop.AllowDrop="True"

Behind code

using Avalonia;
using Avalonia.Controls;
using Avalonia.Input;
using System;
using System.Linq;
using System.Reflection;
using Dokkae.Data;


namespace Dokkae.Views;

public partial class Main : Window
{
    public Main()
    {
        InitializeComponent();
        SetupDnd(
            d => d.Set(DataFormats.FileNames,
                new[] { Assembly.GetEntryAssembly()?.GetModules().FirstOrDefault()?.FullyQualifiedName })
        );
    }

    void SetupDnd(Action<DataObject> factory)
    {
        void Drop(object? sender, DragEventArgs e)
        {
            StaticData.MainVm.ScriptPath =
                string.Join(Environment.NewLine, e.Data.GetFileNames() ?? Array.Empty<string>());
        }

        AddHandler(DragDrop.DropEvent, Drop);
    }

}

 

wpf와 다르게 Drop을 지정한 컨트롤마다 각각 Drop 메서드를 지정해주는 것이 아니라

하나의 메서드에서 관리한다

여러개의 컨트롤마다 각각 지정하려면 Class네임을 각각 설정해서 Drop메서드에서 분기해줘야한다

이는 아발로니아 예제에 잘나와 있으니 참고하자

블로그의 정보

독한 개발자

#독개#

활동하기