Muszę upuścić plik obrazu do mojej aplikacji WPF. Obecnie zdarzenie jest uruchamiane, gdy upuszczam pliki, ale nie wiem, co dalej. Jak uzyskać obraz? Czy sender
obiekt jest obrazem czy kontrolką?
private void ImagePanel_Drop(object sender, DragEventArgs e)
{
//what next, dont know how to get the image object, can I get the file path here?
}
AllowDrop
jest ustawiona na True, aleDrop
procedura obsługi zdarzeń nigdy nie jest wywoływana. Kiedy przeciągam plik przez okno, widzę okrągły symbol „odmowy”Grid
Jako element główny użyłem elementuBorder
wewnętrznego zBackground
właściwością ustawioną na coś (biały jest w porządku, ale nie jest przezroczysty). WewnątrzBorder
umieściłem rzeczywistą zawartość.Plik obrazu jest zawarty w
e
parametrze, który jest instancjąDragEventArgs
klasy .(
sender
Parametr zawiera odwołanie do obiektu, który wywołał zdarzenie).W szczególności sprawdź
e.Data
członka ; jak wyjaśnia dokumentacja, zwraca to odniesienie do obiektu danych (IDataObject
), który zawiera dane ze zdarzenia przeciągania.IDataObject
Interfejs zapewnia szereg metod pobierania obiektu danych, że jesteś po. Prawdopodobnie będziesz chciał zacząć od wywołaniaGetFormats
metody , aby znaleźć format danych, z którymi pracujesz. (Na przykład, czy jest to rzeczywisty obraz, czy po prostu ścieżka do pliku obrazu?)Następnie, po zidentyfikowaniu formatu przeciąganego pliku, wywołasz jedno z określonych przeciążeń
GetData
metody, aby faktycznie pobrać obiekt danych w określonym formacie.źródło
Dodatkowo, aby odpowiedzieć AR, pamiętaj, że jeśli chcesz użyć
TextBox
upuszczenia, musisz znać następujące rzeczy.TextBox
wydaje się mieć już domyślną obsługęDragAndDrop
. Jeśli obiekt danych to aString
, to po prostu działa. Inne typy nie są obsługiwane i otrzymujesz efekt Forbidden mouse, a twoja funkcja obsługi Drop nigdy nie jest wywoływana.Wygląda na to, że możesz włączyć własną obsługę z
e.Handled
na true w programiePreviewDragOver
obsługi zdarzeń.XAML
DO#
źródło