今回はUWPアプリでのドラッグ&ドロップについて見ていきます。
MainPage.xamlには既定でGridが配置されています。
このGridでドラッグ&ドロップをできるようにするには、はじめにAllowDropプロパティをTrueにしておきます。
続いて、DragOverのイベントを作成します。このイベントは、アプリケーション内にドラッグしようとしているときに発生します。
このイベントのe.AcceptedOperationにDataPackageOperation列挙体の値を設定することで アイコンの見た目を変更することができます。
設定可能なアイコンは以下表の通りです。
値 | 説明 |
Copy | ドラッグしようとしているアイコンの上に「コピー」の文字が表示される |
Move | ドラッグしようとしているアイコンの上に「移動」の文字が表示される |
Link | ドラッグしようとしているアイコンの上に「リンク」の文字表示される |
None | ドラッグしようとしているアイコンの上に「禁止マーク」が表示される |
コピーアイコンにする場合は以下のようにコードを記述します。
private void Grid_DragOver(object sender, DragEventArgs e) { e.AcceptedOperation = Windows.ApplicationModel.DataTransfer.DataPackageOperation.Link; }
続いてドロップされた場合の処理ですが、個の場合はDropイベントが発生します。
引数のe.DataView.Containsメソッドで、ドロップされたファイルの種類を調べます。
ドロップされたファイルの種類はWindows.ApplicationModel.DataTransfer.StandardDataFormatsが持つ値で指定します。
指定可能な値を以下の表に示します。
値 |
ApplicationLink |
Bitmap |
Html |
Rtf |
StorageItems |
Text |
Uri |
WebLink |
ファイルがドロップされたことを調べるには以下のように記述します。
private async void Grid_Drop(object sender, DragEventArgs e) { if (e.DataView.Contains(Windows.ApplicationModel.DataTransfer.StandardDataFormats.StorageItems)) { // ファイルのパス一覧を取得する var items = await e.DataView.GetStorageItemsAsync(); var filePaths = items.Select(x => x.Path).ToArray(); } }
Please follow and like us:
コメント