Silverlight Drag и Drop API
Введение
Перетащите и падение общей парадигмы UX и наиболее востребованных функций. В Silverlight 4 Beta, мы ввели в основной набор API для того, чтобы наиболее распространенный сценарий перетаскивания файлов фотографий и бросая их в Silverlight приложениях, и мы разработали API, чтобы позволить нам выявить более перетаскивания функциональность в будущем без изменения API , с надеждой.
API
Ниже ядро нового API:
Пространство имен System.Windows
{
общественный абстрактный UIElement Класс DependencyObject
{
/ / Поля
общественности статической чтения DependencyProperty AllowDropProperty;
/ / События
публичное мероприятие DragEventHandler DragEnter;
публичное мероприятие DragEventHandler DragLeave;
публичное мероприятие DragEventHandler DragOver;
общественное падение DragEventHandler события;
/ / Свойства
общественных AllowDrop Ьоо {get; набор;}
}
sender, DragEventArgs e); общественных DragEventHandler недействительным делегата (объект отправителя, DragEventArgs е);
открытый класс запечатанном DragEventArgs: RoutedEventArgs
{
/ / Методы
общественных GetPosition Point (UIElement relativeTo);
/ / Свойства
Данные общественные IDataObject {[SecuritySafeCritical] get;}
общественных Ьоо обрабатываемых {get; набор;}
}
}
Пространство имен System.Windows.Controls
{
Управление общественных абстрактный класс FrameworkElement
{
защищенных виртуальных недействительными OnDragEnter (DragEventArgs е);
защищенных виртуальных недействительными OnDragLeave (DragEventArgs е);
защищенных виртуальных OnDragOver недействительными (DragEventArgs е);
защищенных виртуальных OnDrop недействительными (DragEventArgs е);
}
}
- AllowDrop: это свойство зависимости, что указывает, является ли элемент перетаскивания.
- DragEnter, DragLeave, DragOver и Drop: они направляются событий. Они пузыриться, и огонь только на элементах с AllowDrop установлено верно.
- OnDragEnter, OnDragLeave, OnDragOver и OnDrop: они защищенных виртуальных функций для подклассов переопределить.
- DragEventArgs: этот класс позволяет перетаскивания обработчики событий или метод коррекции для доступа к данным тащат или удалена.
Использование
Есть в основном два способа использования Silverlight сопротивления и падение API:
- Silverlight приложения могут обрабатывать эти события перетаскивания и обработки файлов, потерянных в обработчики событий.
- Silverlight управления могут переопределять перетаскивания виртуальных функций для обработки данных, перетащить, а также включить себя каплю целей.
Недостатки
Перетаскивания поставляются в Silverlight 4 Beta только позволяет наиболее распространенный сценарий: плагин Silverlight как цель падения файл. Обратите внимание на следующие ограничения с текущей реализации:
- нет поддержки падение источника (QueryContinueDrag и GiveFeedback).
- нет DragDropEffects или DragDropKeyStates в DragEventArgs.
- нет визуального для перетаскиваемого объекта или DragDropEffects.
- только перетаскивание файлов мышью при поддержке:
- все события перетаскивания стрелять только тогда, когда файлы в настоящее время перетаскивать.
- IDataObject, DataObject и DragEventArgs.Data поддерживает только один формат: "FileDrop", а данные типа FileInfo [].
- большинство методов IDataObject бросить NotImplementedException.
- для перетаскивания работать на Windows, Silverlight плагин должен быть оконный. В другом слове, если <param name="windowless" value="true"/> указано, данные события не срабатывает.
- С плагином Silverlight на Mac всегда окон, необходимо подключить события JavaScript, чтобы вызвать падение события Silverlight капли. В другое слово, если вы хотите, чтобы ваш Silverlight приложения для поддержки файлов падение на Mac, а также Windows, вам нужно добавить следующие сценарии и Silverlight плагина атрибуты хостинг HTML или ASPX странице:
<! - Добавить следующий сценарий до конца голова тег ->
<script type= "text/javascript">
Функция handleDragEnter (oEvent) {
/ / Предотвращение умолчанию операции
oEvent.preventDefault ();
уаг флаг = silverlightControl.dragEnter (oEvent);
/ / Если мы справились успешно, то остановить распространение события
если (флаг)
oEvent.stopPropagation ();
}
Функция handleDragLeave (oEvent) {
/ / Предотвращение умолчанию операции
oEvent.preventDefault ();
уаг флаг = silverlightControl.dragLeave (oEvent);
/ / Если мы справились успешно, то остановить распространение события
если (флаг)
oEvent.stopPropagation ();
}
Функция handleDragOver (oEvent) {
/ / Предотвращение умолчанию операции
oEvent.preventDefault ();
уаг флаг = silverlightControl.dragOver (oEvent);
/ / Если мы справились успешно, то остановить распространение события
если (флаг)
oEvent.stopPropagation ();
}
Функция handleDropEvent (oEvent) {
/ / Предотвращение умолчанию операции
oEvent.preventDefault ();
уаг флаг = silverlightControl.dragDrop (oEvent);
/ / Если мы справились успешно, то остановить распространение события
если (флаг)
oEvent.stopPropagation ();
}
</ SCRIPT>
<! - Использовать JavaScript событий перетаскивания, чтобы вызвать события в Silverlight перетаскивания ->
type= "application/x-silverlight-2" width= "100%" height= "100%" <Данные объекта = "данные: application/x-silverlight-2" тип = "application/x-silverlight-2" ширина = "100%" высота = "100%"
ondragover= "handleDragOver(event)" ID = "silverlightControl" OnDragEnter = "handleDragEnter (событие)" OnDragOver = "handleDragOver (событие)"
> ondragleave = "handleDragLeave (событие)" ondrop = "handleDropEvent (событие)"> - DragEventArgs.Data доступна только в падение события. Доступ DragEventArgs.Data в DragEnter, DragOver и DragLeave может привести к SecurityException . И доступ к Directory, Имя_папки или FullName собственности FileInfo объекта DragEventArgs.Data может привести к ArgumentNullException.
Демо-приложение
Ниже представлен демо-приложения:
- в верхнем левом вложенных сеток использовать перетаскивания обработчик события для отображения DragEventArgs информации.
- в правом верхнем углу вложенных сеток содержат контроль ImageDropTarget пользователь, который переопределяет метод OnDrop оказать упал файл, если он есть образ.
- нижнего списка показывает последовательность событий перетаскивания их кипящим вверх, и DragEventArgs информации.
Вы можете найти полный исходный код здесь .
Обратная связь
Хотя мы рады добавить перетаскивания для Silverlight, мы знаем, что есть много закончить / улучшения, и что мы выпустили всего лишь бета-версии. Как всегда, ваш отзыв очень важен, и будет использоваться в качестве важной точки данных, чтобы помочь нам приоритеты в работе. Спасибо!









Последние комментарии