Pergunta

Nós temos um controle RichTextBox WPF e uma vez que controlar o layout, nós simplesmente não podemos permitir que qualquer conteúdo rico ...

Para tanto, é preciso retirar todos os dados, exceto texto da área de transferência. Por exemplo, se alguém está tentando copiar / colar permite texto digamos de uma tabela diretamente do Microsoft Word, o RichTextBox também leva em conta que este texto foi 1. originalmente de uma tabela, 2. negrito e 3. sublinhado, e criar todos os tipos de conteúdo em linha para acomodar todas essas propriedades do texto ...

Este não é um comportamento apropriado no nosso caso, porque pode quebrar os nossos layouts em linha .. nós só queremos o texto limpo ...

A abordagem mais simples seria, no comando paste antevisão:

Clipboard.SetText(Clipboard.GetText());

e ser feito com ele ... Mas você adivinhou .. operações da área de transferência não são permitidos em confiança parcial ...

Nós também experimentamos um corte desagradável sujo, utilizando uma caixa de texto oculto sugerido por este link:
http: // sociais .msdn.microsoft.com / Fóruns / en-US / WPF / thread / 5b5bcd71-2eea-4762-bf65-84176c919fce /

Assim:

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;
    }
}

E, em seguida, chamá-lo assim:

ClipboardManager.SetText(ClipboardManager.GetText());

Isso funciona bem em confiança total, mas por alguma razão, tanto copiar e colar métodos de TextBox não trabalho em confiança parcial ...

Alguém sabe como recuperar o conteúdo da área de transferência no WPF / confiança parcial?

Graças

Editar: Como Nir apontou .. Eu sei que não é muito agradável aos dados de mutação de sua prancheta .. Mas a minha pergunta será respondida apenas o mesmo se alguém pode simplesmente apontar-me como recuperar apenas o texto da área de transferência em confiança parcial:) ..

Foi útil?

Solução

Não é simplesmente possível.

No final, utilizado um botão de alternância, onde você pode alternar para uma caixa de texto, colá-lo lá, e alternância de volta ao nosso controle. Desagradável, mas funciona.

Outras dicas

http://msdn.microsoft.com/en-us/library /aa970910.aspx diz apenas "Plaintext e suporte da área de transferência de tinta" em confiança parcial. Confiança total é necessário para "Rico Clipboard Text Format"

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top