2009-09-02 20 views
18

¿Alguien sabe cómo puedo desactivar el ajuste de texto de un RichTextBox? P. ej. si tengo una cuerda grande que no cabe en la ventana, el RichTextBox coloca la parte de la cuerda que no se puede mostrar de una nueva línea. Quiero desactivar eso (y hacerlo visible solo usando el Scrollbar).C#/WPF: Deshabilitar ajuste del texto de RichTextBox

Muchas gracias.

Saludos

Respuesta

27

Un RichTextBox en WPF es simplemente un editor de una FlowDocument.
Según MSDN:

texto siempre se envuelve en un RichTextBox. Si no desea que el texto se ajuste a continuación, establecer el PageWidth en el FlowDocument a ser mayor que el ancho de la RichTextBox. Sin embargo, una vez que se alcanza el ancho de la página , el texto aún se ajusta.

Así, mientras que no hay manera de que se desactive explícitamente la palabra-pack de un RichTextBox, se puede hacer algo como esto:

richTextBox1.HorizontalScrollBarVisibility = ScrollBarVisibility.Visible; 
richTextBox1.Document.PageWidth = 1000; 

que tendrá esencialmente el mismo efecto deseado hasta que tenga una línea que excede el PageWidth.

Nota (a partir de julio de 2015): VS2015 RC permite que wordwrap = false funcione exactamente como OP parece desear. Creo que las versiones anteriores de Visual Studio también lo hicieron.

+0

Gracias! Funcionó como un encanto –

+6

no me gusta la solución porque entonces el Scroolbar horizontal es visible todo el tiempo ... – Elisabeth

+0

que sería bueno si se puede establecer que al detectar (de alguna manera) es necesario que la envoltura (por ejemplo, comprobar cada "carrera" [párrafo] anchura o algo así) y vuelva a apagado cuando no se necesita (el cambio de texto de vigilancia para comprobar cada vez, aunque puede ser lento) –

0

También necesitaba mostrar una cadena grande y probado el RichTextBox pero no me gusta la solución con el establecimiento de la PageWidth del documento a un tamaño fijo. La barra de desplazamiento estaría visible todo el tiempo y el área de desplazamiento sería grande.

Si un TextBlock es suficiente se puede utilizar en su lugar y colocarlo dentro de un ScrollViewer. Funcionó perfecto para mí, ya que no necesitaba todas las características adicionales de RichTextBox.

<ScrollViewer Width="200" 
       Height="100" 
       HorizontalScrollBarVisibility="Auto" 
       VerticalScrollBarVisibility="Auto"> 
        <TextBlock TextWrapping="NoWrap"> 
         <TextBlock.Text> 
          Very long text Very long text Very long text 
         </TextBlock.Text> 
        </TextBlock> 
</ScrollViewer> 
+0

TextBlock no se puede editar, además de que no creo que sea compatible con formato enriquecido –

+1

@GeorgeBirbilis TextBlock no es editable pero apoyo formato enriquecido utilizando etiquetas de formato anidados. Negrita, Hipervínculo, etc. – SepehrM

1

Si no desea mostrar la barra de desplazamiento horizontal, hacer cumplir un MinWidth en el ScrollViewer:

<RichTextBox ScrollViewer.HorizontalScrollBarVisibility="Hidden"> 

    <RichTextBox.Resources> 
     <Style TargetType="ScrollViewer"> 
      <Setter Property="MinWidth" Value="2000" /> 
     </Style> 
    </RichTextBox.Resources> 

</RichTextBox> 
Cuestiones relacionadas