Pregunta

Tenemos un control RichTextBox WPF y como controlamos el diseño, simplemente no podemos permitir ningún contenido rico ...

Por lo tanto, necesitamos eliminar todos los datos excepto el texto del portapapeles. Por ejemplo, si alguien está intentando copiar / pegar, digamos texto de una tabla directamente desde Microsoft Word, RichTextBox también tiene en cuenta que este texto era 1. originalmente de una tabla, 2. negrita y 3. subrayado, y crea todo tipos de contenido en línea para acomodar todas estas propiedades del texto ...

Este no es un comportamiento apropiado en nuestro caso, porque puede romper nuestros diseños en línea ... solo queremos el texto limpio ...

El enfoque más simple sería, en el comando de vista previa pegar:

Clipboard.SetText(Clipboard.GetText());

y terminemos con eso ... Pero lo adivinaron. Las operaciones del portapapeles no están permitidas en confianza parcial ...

También probamos un truco sucio y desagradable, usando un cuadro de texto oculto sugerido por este enlace:
http: // social .msdn.microsoft.com / Forums / es-ES / wpf / thread / 5b5bcd71-2eea-4762-bf65-84176c919fce /

Me gusta así:

public static class ClipboardManager
{
    private static readonly TextBox textBox = new TextBox {AcceptsReturn = true, AcceptsTab = true};

    public static void SetText(string text)
    {
        textBox.Text = text;
        textBox.SelectAll();
        textBox.Copy();
    }

    public static string GetText()
    {
        textBox.Clear();
        textBox.Paste();
        return textBox.Text;
    }
}

Y luego llámalo así:

ClipboardManager.SetText(ClipboardManager.GetText());

Esto funciona bien con plena confianza, pero por alguna razón, los métodos Copiar y Pegar de TextBox no funcionan con confianza parcial ...

¿Alguien sabe cómo recuperar el contenido del Portapapeles en WPF / confianza parcial?

Gracias

Editar: Como señaló Nir ... Sé que no es muy agradable mutar datos de su portapapeles ... Pero mi pregunta será respondida de la misma manera si alguien puede señalarme cómo recuperar solo el texto del portapapeles en confianza parcial :) ..

¿Fue útil?

Solución

Simplemente no es posible.

Al final, utilizamos un botón de alternar donde puede alternar a un cuadro de texto, pegarlo allí y volver a nuestro control. Desagradable, pero funciona.

Otros consejos

http://msdn.microsoft.com/en-us/library /aa970910.aspx solo dice "Soporte de Portapapeles de tinta y texto sin formato" en confianza parcial. Se requiere plena confianza para " Portapapeles de formato de texto enriquecido "

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top