Jednoduchý Drag&Drop v XAML (WinRT)

Tento krátký článek představí metodu, jak jednoduše naprogramovat Drag&Drop funkci pro prvky v XAML. Ukázka se bude týkat komponenty GridView, která Drag&Drop prvků umožňuje. Našim cílem bude vytvořit demo aplikace, kde budu moct jednotlivé prvky z jedné GridView přesouvat do druhé. Tato funkce se nám určitě bude hodit při různých mini-hrách nebo třeba v aplikaci, která spravuje nějaké data apod. Článek je sepsán pro Universal Apps, avšak kód by měl být funkční i pro nativní Windows Store aplikace nebo WPF.

Nejdříve si připravíme jednoduchý ViewModel. Naše aplikace bude zobrazovat 2 kolekce s Rectangly.

Samotný ViewModel si založíme v XAML části. Přesuneme se tedy k XAML. Nejdříve si nadefinujeme náš ViewModelv Page.Resources

Dále máme hlavní Grid rozdělený na dva řádky. Každý řádek obsahuje právě jeden GridView

Všmněte si nastaveného DataContext na náš ViewModel. Také si všimněte, že obě GridView mají přiřazené dvě události DragItemStarting Drop. Obě odkazují na stejnou metodu, díky toho docílíme snadného Drag&Drop a výměny položek.

Nyní poslední část – code-behind. Naše první metoda je GridViewDragItemsStarting

Metoda je prostá. Nejdříve si načteme první položku z EventArgumentů události, pokud není null do Data.Properties události přidáme odkaz na položku a objekt (sender) – tedy zdrojový objekt odkud předáváme položky.

Druhá metoda GridViewDrop

Opět je metoda jednoduchá. Nejdříve se pokusíme načíst zdrojový objekt (odkud položky posíláme) a zdrojovou položku. Pokud se vše načte, na našem ViewModelu zavoláme metodu Switch. Nezapomene objekt přetypovat na objekt typu Rectangle.

A to je vše. Pokud najdete nesrovnalosti nebo máte dotaz neváhejte napsat.

 

 

Napsat komentář

Vaše emailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *

„Kdo má tak málo fantazie, že své lži musí opírat o důkazy, měl by raději rovnou mluvit pravdu.“ Oscar Wilde