Tips Arrastrar y Soltar (Drap and Drop) con SilverLight 4
| Tweet
Hola a todos..
Como ya sabrán hace poco anunciaron la beta de SilverLight 4, y con eso han surgido muchos demos yo no dejare de ser uno de los que muestre un demo :) así que les explicare que como hacer el Drap and Drop (Arrastrar y Soltar) en nuestras aplicaciones de SilverLight.
1. La definición explicada por Rodrigo Díaz Concha en su pagina esta mas que genial así que hago referencia a su post: http://rdiazconcha.com/?p=487
Silverlight 4 cuenta con soporte de arrastrar uno o varios archivos desde afuera de la aplicación hacia adentro de ella y soltarlo(s) para poder leer su información y contenido. Esta característica nos permite como desarrolladores crear mejores Experiencias para los Usuarios ya que evitan el número de cajas de diálogo y clics para abrir o leer un archivo o conjunto de archivos.
2. Abrimos nuestro Visual Studio 2010 Beta2 (el que estoy usando para esta explicación) y creamos una Aplicación SilverLight y le llamaremos Drap_and_Drop
3. Visual Studio 2010 nos indicara si deseamos crear un Proyecto Web para testear nuestra aplicación SilverLight le daremos OK.
4. Agregamos un control image a nuestra pantalla y le agregamos la propiedad AllowDrop en true también en su propiedad Source buscaremos una imagen cualquiera que nos sirva de entrada para reconocer al control cuando le arrastremos una imagen:
<Image x:Name="image1" AllowDrop="True" Width="300" Height="300" Source="/Drap_and_Drop;component/Images/es-1957438248.jpg">
</Image>
5. Nos ubicamos en la hoja de código de la pantalla (del UserControl) y agregamos en el Constructor de la pagina el siguiente código:
image1.Drop += new DragEventHandler(image1_Drop);
6. Luego de la línea anterior escribiremos el siguiente evento:
void image1_Drop(object sender, DragEventArgs e) { //Verificamos que se se allan agregado alguna imagen mediante el arrastre //de nuestra maquina al control image if (e.Data != null) { //Obtenemos la informacion del archivo arrastrado al control System.IO.FileInfo[] fiArchivos = e.Data.GetData(DataFormats.FileDrop) as System.IO.FileInfo[]; foreach (System.IO.FileInfo fi in fiArchivos) { System.IO.FileStream fs = fi.OpenRead(); System.Windows.Media.Imaging.BitmapImage bi = new System.Windows.Media.Imaging.BitmapImage(); bi.SetSource(fs); image1.Source = bi; fs.Close(); } } }
Ya con eso podemos ejecutar nuestra aplicación y hacer pruebas aquí le dejo el resultado: http://ajdev.net/DemoDrapandDrop.html y la Fuente la puedes descargar de Aqui
y también el código completo de la pagina XAML y Code
XAML:
<UserControl x:Class="Drap_and_Drop.MainPage" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="d" d:DesignHeight="400" d:DesignWidth="400"> <Grid x:Name="LayoutRoot" Background="White"> <Image x:Name="image1" AllowDrop="True" Width="300" Height="300" Source="/Drap_and_Drop;component/Images/es-1957438248.jpg"> </Image> </Grid> </UserControl>
Code:
using System; using System.Collections.Generic; using System.Linq; using System.Net; using System.Windows; using System.Windows.Controls; using System.Windows.Documents; using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Animation; using System.Windows.Shapes; namespace Drap_and_Drop { public partial class MainPage : UserControl { public MainPage() { InitializeComponent(); image1.Drop += new DragEventHandler(image1_Drop); } void image1_Drop(object sender, DragEventArgs e) { //Verificamos que se se allan agregado alguna imagen mediante el arrastre //de nuestra maquina al control image if (e.Data != null) { //Obtenemos la informacion del archivo arrastrado al control System.IO.FileInfo[] fiArchivos = e.Data.GetData(DataFormats.FileDrop) as System.IO.FileInfo[]; foreach (System.IO.FileInfo fi in fiArchivos) { System.IO.FileStream fs = fi.OpenRead(); System.Windows.Media.Imaging.BitmapImage bi = new System.Windows.Media.Imaging.BitmapImage(); bi.SetSource(fs); image1.Source = bi; fs.Close(); } } } } }
Te ha gustado este Post?
Pues seria genial si pudieras compartirlo con otras personas y asi llegarle a mas personas que pudiera ser util esta publicación. Animate a compartir
| Compartir |
|
|
|
|
Deja tu Comentario




![Validate my RSS feed [Valid RSS]](http://validator.w3.org/feed/images/valid-rss-rogers.png)
