Estou obtendo texto de um arquivo XML e gostaria de inserir algumas novas linhas que são interpretadas pela renderização do bloco de texto como novas linhas.
Eu tentei:
<data>Foo bar baz \n baz bar</data>
Mas os dados ainda são exibidos sem a nova linha. Eu defino o conteúdo de<data>
por meio da .Text
propriedade via C #.
O que preciso colocar no XML para que ele renderize a nova linha na GUI?
Tentei algo parecido com a configuração manual do texto no XAML:
<TextBlock Margin="0 15 0 0" Width="600">
There
is a new line.
</TextBlock>
E embora o caractere codificado não apareça na GUI, também não me dá uma nova linha.
Respostas:
Você pode tentar colocar uma nova linha nos dados:
Se isso não funcionar, pode ser necessário analisar a string manualmente.
Se você precisa de XAML direto, isso é fácil:
fonte
XmlSerializer
as quebras serão mantidas. No Xaml você precisa<LineBreak/>
.Para completar: você também pode fazer isto:
x0A é a alimentação de linha hexadecimal com escape. O equivalente a \ n
fonte
Você também pode usar ligação
E defina MeuTexto assim:
fonte
você deve usar
Ou se preferir:
cuidado: se você usar & 10 E for para a próxima linha em seu texto, terá DUAS linhas vazias.
aqui para obter detalhes: http://msdn.microsoft.com/en-us/library/ms788746.aspx
fonte
Embora esta seja uma pergunta antiga, acabei de encontrar o problema e resolvê-lo de forma diferente das respostas fornecidas. Talvez possa ser útil para outras pessoas.
Percebi que, embora meus arquivos XML se pareçam com:
Quando foi lida em meu código C #, a string tinha barras invertidas duplas.
Para corrigir isso, escrevi um ValueConverter para remover a barra invertida extra.
fonte
TextWrapping="Wrap"
(eAcceptsReturn="True"
se este fosse um TextBox) no XAML no TextBlock, você acertou, e esta deve ser a resposta - mas apenas diga para fazer.Replace()
no valor proveniente do banco de dados - não há necessidade de um função extravagante:valueAsString = valueAsString.Replace("\\r\\n", "\r\n");
qualquer valor inserido usando a tecla Return será gravado no banco de dados perfeitamente - é quando o C # o pega para exibir o valor que os problemas são causados, como você observou. Portanto, isso precisaria ser chamado no carregamento do texto.Se tudo mais falhar, você também pode usar
fonte
fonte
Usar System.Environment.NewLine é a única solução que funcionou para mim. Quando tentei \ r \ n, ele apenas repetiu o \ r \ n real na caixa de texto.
fonte
Você deve garantir que o bloco de texto tenha esta opção habilitada:
fonte
Insira uma "quebra de linha" ou "quebra de parágrafo" em um RichTextBox "rtb" como este:
A única maneira de obter os itens NewLine é inserindo texto com itens "\ r \ n" primeiro e, em seguida, aplicando mais código que funcione em objetos Selection e / ou TextRange. Isso garante que os itens \ par sejam convertidos em \ itens de linha, sejam salvos conforme desejado e ainda estejam corretos ao reabrir o arquivo * .Rtf. Isso é o que eu descobri até agora depois de muitas tentativas. Minhas três linhas de código precisam ser cercadas por mais código (com loops) para definir os itens TextPointer (.Start .End .ContentStart .ContentEnd) onde as linhas e quebras devem ir, o que fiz com sucesso para meus propósitos.
fonte