Silverlight arrastrar y soltar API
Introducción
Arrastrar y soltar es un paradigma común UX y una función más solicitados. En Silverlight 4 Beta, hemos introducido un conjunto básico de API para permitir que el escenario más común de archivos de imágenes arrastrando y soltando a las aplicaciones de Silverlight, y hemos diseñado la API que nos permite exponer más funcionalidades de arrastrar y soltar en el camino sin cambio API , es de esperar.
API
A continuación se muestra el núcleo de la nueva API:
espacio de nombres System.Windows
{
UIElement público clase abstracta: DependencyObject
{
/ / Campos
estáticos públicos de sólo lectura DependencyProperty AllowDropProperty;
/ / Eventos
Evento público DragEnter DragEventHandler;
eventos públicos DragEventHandler DragLeave;
público evento DragOver DragEventHandler;
acto público caída DragEventHandler;
/ / Propiedades
pública AllowDrop bool {get; set;}
}
sender, DragEventArgs e); Delegado público DragEventHandler void (object sender, DragEventArgs e);
públicos cerrados DragEventArgs clase: RoutedEventArgs
{
/ / Métodos
GetPosition Punto pública (UIElement relativeTo);
/ / Propiedades
pública IDataObject datos {[SecuritySafeCritical] get;}
public bool manejado {get; set;}
}
}
System.Windows.Controls espacio de nombres
{
control público clase abstracta: FrameworkElement
{
virtual protegido vacío OnDragEnter (DragEventArgs e);
virtual protegido vacío OnDragLeave (DragEventArgs e);
OnDragOver void virtual (DragEventArgs e);
ondrop void virtual (DragEventArgs e);
}
}
- AllowDrop: es propiedad de dependencia, que indica si un elemento es un destino de colocación.
- DragEnter, DragLeave, DragOver & Drop: estos eventos se dirigen. Que brotan, y el fuego sólo en los elementos con el conjunto de AllowDrop en true.
- OnDragEnter, OnDragLeave, OnDragOver y ondrop: se trata de funciones virtuales protegidas por las subclases para anular.
- DragEventArgs: esta clase permite colocar controladores de eventos de destino o invalida el método para acceder a los datos que se arrastran o se quita.
Uso
Existen principalmente dos formas de utilizar Silverlight arrastrar y soltar API:
- Las aplicaciones de Silverlight pueden manejar los eventos de destino de colocación y el proceso de archivos colocados en los controladores de eventos.
- Controles de Silverlight puede anular esas funciones destino de colocación virtual para procesar los datos que arrastrar y soltar, y permitir a sí mismos como blancos de la gota.
Limitaciones
La funcionalidad de arrastrar y soltar enviado en Silverlight 4 Beta sólo permite que el escenario más común: plugin de Silverlight como un destino de colocación de archivos. Por favor, observe las siguientes limitaciones en la aplicación actual:
- no hay soporte de fuentes de gota (QueryContinueDrag y GiveFeedback).
- no hay DragDropEffects o DragDropKeyStates en DragEventArgs.
- no hay visual del objeto arrastrado o DragDropEffects.
- sólo arrastrar y soltar el archivo es compatible con:
- todos los eventos de destino de colocación de fuego sólo cuando los archivos están siendo arrastrados y soltados.
- IDataObject, DataObject y DragEventArgs.Data apoyar un solo formato: "FileDrop", y los datos son de tipo FileInfo [].
- la mayoría de los métodos IDataObject lanzar NotImplementedException.
- para arrastrar y soltar para trabajar en Windows, plugin de Silverlight debe ventana. En una palabra, si <param name="windowless" value="true"/> se especifica, los eventos de caída no se disparará.
- desde Silverlight plugin en Mac siempre sin ventanas, es necesario conectar los eventos de JavaScript gota a gota desencadenar eventos de Silverlight. En una palabra, si desea que la aplicación Silverlight para apoyar caída de archivos en Mac como en Windows, tendrá que agregar secuencias de comandos y atributos siguientes Silverlight plug-in para el hosting html o aspx:
<-! Agregar secuencias de comandos siguientes antes de final de la etiqueta HEAD ->
<script type= "text/javascript">
función handleDragEnter (oEvent) {
/ / Evitar las operaciones por defecto
oEvent.preventDefault ();
var flag = silverlightControl.dragEnter (oEvent);
/ / Si se manejan con éxito y luego se detiene la propagación del evento
if (flag)
oEvent.stopPropagation ();
}
función handleDragLeave (oEvent) {
/ / Evitar las operaciones por defecto
oEvent.preventDefault ();
var flag = silverlightControl.dragLeave (oEvent);
/ / Si se manejan con éxito y luego se detiene la propagación del evento
if (flag)
oEvent.stopPropagation ();
}
función handleDragOver (oEvent) {
/ / Evitar las operaciones por defecto
oEvent.preventDefault ();
var flag = silverlightControl.dragOver (oEvent);
/ / Si se manejan con éxito y luego se detiene la propagación del evento
if (flag)
oEvent.stopPropagation ();
}
función handleDropEvent (oEvent) {
/ / Evitar las operaciones por defecto
oEvent.preventDefault ();
var flag = silverlightControl.dragDrop (oEvent);
/ / Si se manejan con éxito y luego se detiene la propagación del evento
if (flag)
oEvent.stopPropagation ();
}
</ Script>
<- El uso de JavaScript acontecimientos destino de colocación para desencadenar eventos de Silverlight caída de destino ->
ondragover= "handleDragOver(event)" id = "silverlightControl" ondragenter = "handleDragEnter (evento)" ondragover = "handleDragOver (evento)"
> ondragleave = "handleDragLeave (evento)" ondrop = "handleDropEvent (evento)"> - DragEventArgs.Data sólo se puede acceder en caso de caída. Acceso a DragEventArgs.Data en DragEnter, DragOver y DragLeave puede causar SecurityException . Y acceso a la propiedad de directorio, o DirectoryName FullName del objeto FileInfo de DragEventArgs.Data puede causar ArgumentNullException.
Demo de la aplicación
A continuación se muestra una aplicación de demostración:
- la parte superior izquierda rejillas anidadas uso destino de colocación controlador de eventos para mostrar la información DragEventArgs.
- la parte superior derecha rejillas anidadas contienen un control de usuario ImageDropTarget, lo que invalida el método ondrop para hacer que el archivo bajado si se trata de una imagen.
- el cuadro de lista inferior muestra la secuencia de eventos de destino de colocación, sus burbujas, y DragEventArgs información.
usted puede encontrar el código fuente completo aquí .
Realimentación
Si bien estamos muy contentos de añadir arrastrar y soltar para Silverlight, sabemos que hay mucho para terminar / mejorar, y lo dimos a conocer es sólo una versión beta. Como siempre, sus comentarios son muy apreciados, y se utilizará como punto de información importante para ayudarnos a priorizar el trabajo. Gracias!









Comentarios recientes