Silverlight 4 Beta – Acceso al Portapapeles
Posted on : 25-11-2009 | By : Rodrigo | In : Silverlight 4
Tags: Clipboard, Confianza Elevada, Portapapeles, Silverlight 4
1
Silverlight 4 incorpora la posibilidad de acceder programáticamente al Portapapeles desde nuestra aplicación. En este artículo veremos esta pequeña pero importante funcionalidad.
El proyecto
Crearemos un proyecto de Silverlight 4 por medio de Visual Studio 2010 Beta 2. Al proyecto lo nombraremos Demo.SL4.Portapapeles y aceptaremos las opciones por default de creación del proyecto Web para probar la aplicación. La aplicación tendrá la siguiente Interface de Usuario:
En el primer botón guardaremos el texto del TextBox en el Portapapeles. Además, su propiedad IsEnabled estará atada a la ruta de propiedad Text.Length del TextBox. Este es un buen ejemplo de Atado de Datos entre Elementos. En el segundo botón leeremos el contenido del Portapapeles y lo pondremos en el TextBlock.
La aplicación estará configurada para poder correr en Confianza Elevada para mostrar los conceptos aquí demostrados.
Clase Clipboard
La clase que permite el acceso al Portapapeles es la clase System.Windows.Clipboard. Es importante mencionar lo siguiente:
- El método ContainsText() indica si el Portapapeles tiene contenido
- Para aplicaciones que estén corriendo en el sandbox (aplicaciones dentro del Navegador o Aplicaciones Fuera del Navegador tradicionales), la ejecución de los métodos GetText() y SetText() provoca la siguiente caja de diálogo, para que el usuario dé permiso explícito a la aplicación para usar el Portapapeles. Cabe mencionar que GetText() y SetText() en este caso deberán ser iniciadas por una acción del usuario (ejemplo: el Click de un botón):
- Para las aplicaciones que ejecuten en Confianza Elevada, la anterior caja de diálogo es omitida y tendremos acceso directo a los métodos de la clase. Además los métodos podrán ser ejecutados desde cualquier evento. Tal es el caso de nuestra aplicación de ejemplo en donde tenemos el siguiente código:
{
if (Application.Current.HasElevatedPermissions)
{
Clipboard.SetText("Corriendo en confianza elevada " + DateTime.Now.ToString());
textBox1.Text = Clipboard.GetText();
}
};
En el código podemos apreciar cómo estamos ejecutando el método SetText() siempre y cuando la aplicación esté corriendo en Confianza Elevada.
- El Portapapeles en Silverlight 4 (en esta versión Beta por lo menos), únicamente soporta cadenas de texto tipo Unicode.
Resultado
La aplicación ejecutando en Confianza Elevada:
Resumen
La clase System.Windows.Clipboard nos permite tener acceso programático al Portapapeles. Si la aplicación está ejecutando en el sandbox (Confianza Parcial), el usuario tendrá que dar permiso explícito a través de una caja de diálogo para poder usar el Portapapeles. Si la aplicación ejecuta en Confianza Elevada, esta caja de diálogo es omitida.
Pueden descargar el código de aquí
Pueden ver el demo en vivo aquí (requiere Silverlight 4)




[...] Ver el artículo completo aquí [...]