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();
}
}
}
}
}
Tags: ASP.net -
Csharp -
Desarrollo -
SilverLight -
Tips -
Trucos -
Tutoriales
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