Drag and Drop UWP — c# xaml mvvm

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд
Загрузка...

Вопрос:


Нужно иметь возможность добавлять изображения в приложение путем перетаскивания из файловой системы

У Grid включил AllowDrop. Но как добавить перетаскиваемые изображения в коллекцию? Т.к. те примеры что видел, добавляют изображения только в кодбихайнд.

Написал метод в контроле

 private void Grid_DragOver(object sender, DragEventArgs e)
    {
        e.AcceptedOperation = DataPackageOperation.Copy;

        if (e.DragUIOverride != null)
        {
            e.DragUIOverride.Caption = "Add file";
            e.DragUIOverride.IsContentVisible = true;
        }
    }

XAML

<Grid    
    Width="2560" 
    Height="1600"
    Margin="0,0,0,0" 
    AllowDrop="True"
    Drop=" "
    DragOver="Grid_DragOver"
    VerticalAlignment="Center" 
    HorizontalAlignment="Center">



  <Image
     Width="525"
     Height="331"
     Tapped="Image_Tapped"
     Source="{x:Bind Image}"
     Margin="{x:Bind Margins}"
     DoubleTapped="Image_DoubleTapped"
     RightTapped="Image_RightTapped"
     ManipulationDelta="Image_ManipulationDelta"
     ManipulationMode="TranslateX, TranslateY,Rotate,Scale">
         <Image.RenderTransform>
             <CompositeTransform/>
         </Image.RenderTransform>
  </Image>

Метод Drop посылаю в команду на ВМ, там по идее должен добавить полученные картинки в ObservableCollection, в которой они хранятся.(Приложение должно иметь 2 вида загрузки картинок, через пикер и дроп). Не понял как мне их там получить. Я же не могу с View в VM передать аргумент DragEventArgs e или могу?

Автор вопроса: SmiLe

SmiLe

Реализовал Drop метод в контроле

 private async void Grid_Drop(object sender, DragEventArgs e)
    {
        if (e.DataView.Contains(StandardDataFormats.StorageItems))
        {
            var items = await e.DataView.GetStorageItemsAsync();
            for (int i = 0; i < items.Count; i++)
            {
                ViewModelLocator.ManipulatorInstance.TempFiles.Add(items[i] as StorageFile);
            }
            ViewModelLocator.ManipulatorInstance.DropFilesExecute();
        }
    }

В цикле закинул в List<StorageFile> на ВМ и вызвал метод с ВМ, который уже добавляет в коллекцию

Источник

Вам также может быть интересно:

Растягивание Высоты , Резина — html css html5
Вопрос: Здравствуйте! Реализовал резиновый дизайн. Растягивается ширина, но длина по % не растягивается. Возможно ли это реализовать? Или так и задумано, растягивание только на ширину ...
Jquery position().left Как быть на мобильниках? — javascript jquery css
Вопрос: На мобильных устройствах, если зумишь экран, position всегда разный. $('g').position().left Как сделать так, чтобы он не менял свои значения? Автор вопроса: ...
Jquery position().left Как быть на мобильниках? — javascript jquery css
Вопрос: На мобильных устройствах, если зумишь экран, position всегда разный. $('g').position().left Как сделать так, чтобы он не менял свои значения? Автор вопроса: ...
requestAnimation и очередность отрисовки — javascript canvas
Вопрос: Здравствуйте! Реализовал 2D игру и в Edge работает все плавно и круто, но в Firefox'e подвисает, сказали, что нужно сделать, чтобы раз-два момент и все ...
Контекстное/всплывающее меню в Android — java android popup
Вопрос: Есть ли техническая возможность сделать приложение, добавляющее свое контекстное или всплывающее меню в любом месте системы? Хочу, чтобы при выделении любого текста появлялась дополнительная кнопка ...
Контекстное/всплывающее меню в Android — java android popup
Вопрос: Есть ли техническая возможность сделать приложение, добавляющее свое контекстное или всплывающее меню в любом месте системы? Хочу, чтобы при выделении любого текста появлялась дополнительная кнопка ...
Завершить службы циклом — c# windows-service
Вопрос: Можно ли остановить службы циклом? У меня есть список служб, занёс их в List List<string> name = new List<string> { "AdobeARMservice", "RemoteRegistry", "TermService", "Messenger", "SSDPSRV", ...
Завершить службы циклом — c# windows-service
Вопрос: Можно ли остановить службы циклом? У меня есть список служб, занёс их в List List<string> name = new List<string> { "AdobeARMservice", "RemoteRegistry", "TermService", "Messenger", "SSDPSRV", ...
RecyclerView — разная разметка — android recyclerview
Вопрос: Смотрел, я смотрел в сторону RecyclerView и наконец решил кинуть ListView и на тебе! В "плохом прошлом" мой ListView использовался для двух разметок. Сейчас я ...
RecyclerView — разная разметка — android recyclerview
Вопрос: Смотрел, я смотрел в сторону RecyclerView и наконец решил кинуть ListView и на тебе! В "плохом прошлом" мой ListView использовался для двух разметок. Сейчас я ...
Как правильно передать массив аргументом для пользовательской функции — php
Вопрос: Если не брать в функцию все это, тогда результат работает. А если вот так в функции все выполнять, тогда PHP ругается: «Invalid ...
Как правильно передать массив аргументом для пользовательской функции — php
Вопрос: Если не брать в функцию все это, тогда результат работает. А если вот так в функции все выполнять, тогда PHP ругается: «Invalid ...
ViewPager внутри ViewPager — такие матрешки работают? — android viewpager
Вопрос: Доброго времени суток. Назрела новая задача. Есть каталог мастеров. При выборе конкретного мастера открывается его страница (активити с ViewPager), и теперь мастеров можно перелистывать свайпом. ...
Почему id всегда 1 Yii2 — yii авторизация
Вопрос: Использую все как по документации. Для получения информации о пользователе использую $identity = $model->findOne(]); И каким бы не был email, id пользователя всегда ...
Механизм добавления новых настроек в админке wp и корректный рендеринг — php wordpress
Вопрос: Есть следующий код: $tabs = array( 'vk', 'facebook', 'instagram' ); $saved = false; if(isset($_POST) && $_POST == 'Y') { $plugin_source_tabs = $_POST; update_option('plugin_source_tabs', ...