Попробовал сам. На самом деле это будет работать после того, как вы там что-нибудь сыграете. Вот точка: предположим, у нас есть сетки:
<Grid AllowDrop="True"></Grid>
Это не позволит капли. Теперь следующий
<Grid Background="Transparent" AllowDrop="True"></Grid>
Позволит капли.
Первая сетка не имеет фона вообще, так что на самом деле нет никакого способа отбросить что-либо на ней - нет сетки. А во втором случае есть фон сетки, хотя мы не можем его увидеть.
То же самое относится к MediaElement. К сожалению, у него нет никаких свойств фона или содержимого, поэтому он не позволит отказаться, пока вы не начнете что-то там играть.
Решение состоит в том, чтобы обрабатывать падение на родительском контейнере MediaElement.
Кстати, не забудьте установить LoadedBehavior = «Manual» для MediaElement, чтобы он воспроизводил сброшенный файл.
EDIT.
Вот объяснение, почему MediaElement не позволяет отказаться, пока в него не будет загружен контент.
Каждый компонент WPF на самом деле состоит из некоторых других основных элементов: Границы, Сетки, ContentPresenters и т. Д. Так что что-то внутри MediaElement обрабатывает падение. Я не могу сказать вам, что это за элемент, потому что шаблон MediaElement недоступен. Но на самом деле не имеет значения, что именно элемент, который обрабатывает перетаскивание туда. Важно то, что в области MediaElement нет ничего существенного, пока вы не загрузите контент на нем - точно так же, как в случае с моим примером с Grid в начале этого сообщения. Я имею в виду, что когда вы перемещаете курсор мыши над его областью, между курсором и контейнером MediaElement нет ничего. Попробуйте обработать событие MouseDown: результат будет таким же - он не срабатывает, пока вы не загрузите какое-либо видео. Зачем? Потому что нечего возбуждать. Ничто не может ничего поднять. Как я уже упоминал ранее, существует большая разница между Background = "{x: Null}" и Background = "Transparent": в первом случае нет фоновой кисти, нет фона, но во втором случае есть один. Почувствуйте разницу.
благодарит за ответ, но не работает, загрузка, но не играет – havan
Работает для меня. Замените первую строку обработчика Drop String [] FileName = (String []) e.Data.GetData (DataFormats.FileDrop); – EvAlex
k его work.but как это работает в первый раз.can u скажите мне процесс – havan