Silverlight Перетащите и 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 Ьоо {получить, установить;}
}
sender, DragEventArgs e); общественных DragEventHandler недействительным делегата (объект отправителя, DragEventArgs е);
общественных запечатанный класс DragEventArgs: RoutedEventArgs
{
/ / Методы
общественных GetPosition Point (UIElement relativeTo);
/ / Свойства
общественных IDataObject Данные {[SecuritySafeCritical] получить;}
риЬИс Ьоо Handled {получить, установить;}
}
}
имен 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, мы знаем, Есть много закончить / улучшится, и то, что мы выпустили только бета-версии. Как всегда, ваш отзыв очень важен, и будет использоваться в качестве важной точки данных, чтобы помочь нам приоритеты работы. Спасибо!









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