Tengo varias RichTextBox de solo lectura que se utilizan para registrar la salida. Como solo son de lectura, no parecen desplazarse automáticamente cuando se actualiza el texto. I puede utilizar el evento TextChanged para forzar un desplazamiento hacia el final, pero ¿no hay simplemente una manera de establecer una propiedad o algo en el XAML para que el desplazamiento ocurra de forma normal?¿Cómo puedo hacer un desplazamiento de RichTextBox hasta el final cuando agrego una nueva línea?
Respuesta
He buscado en Google su problema y he encontrado this mensaje. En la sección "Programación de RichTextBox", el autor describió cómo lograr que el comportamiento sea el esperado.
Por favor, revise y avíseme si es de alguna utilidad.
Me trataron de reproducir el problema y se le ocurrió la siguiente solución
<Window x:Class="CheckRichTextBox.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="170" Width="300">
<StackPanel>
<RichTextBox Height="100" Name="richTextBox1" IsReadOnly="True" VerticalScrollBarVisibility="Visible"/>
<Button Name="btnAdd" Content="Click me to add text" VerticalAlignment="Bottom" Click="BtnAddClick" />
</StackPanel>
</Window>
El código detrás de la misma es la siguiente:
using System.Windows;
namespace CheckRichTextBox
{
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
private void BtnAddClick(object sender, RoutedEventArgs e)
{
richTextBox1.AppendText("You had Clicked the button for adding text\n");
richTextBox1.ScrollToEnd();
}
}
}
Esto resuelve el problema de desplazamiento automático , por favor verifíquelo y avíseme si es de alguna ayuda.
Hace visible la barra de desplazamiento, pero todavía no se desplaza al final del documento cuando el texto se agrega programáticamente. Parece que puedo estar atascado con el evento TextChanged. – Merad
Espero que la solución editada pueda ayudarlo – Pank
@Merad ¿Cómo lo hace con el evento TextChanged? –
He resuelto este problema usando un disparador Interactivity y una acción muy simple.
La acción se ve así:
public class ScrollToBottomAction : TriggerAction<RichTextBox>
{
protected override void Invoke(object parameter)
{
AssociatedObject.ScrollToEnd();
}
}
Luego, en mi XAML tengo unas pocas cosas:
<RichTextBox IsReadOnly="True" VerticalScrollBarVisibility="Auto">
<i:Interaction.Triggers>
<i:EventTrigger EventName="TextChanged">
<interactivity:ScrollToBottomAction/>
</i:EventTrigger>
</i:Interaction.Triggers>
</RichTextBox>
¡Gran solución! –
No puedo hacer que esto funcione porque tiene algo que ver con que la versión de mezcla sea antigua. Y probé lo que se sugirió en http://stackoverflow.com/questions/32024034/the-type-from-assembly-is-built-with-an-older-version-of-blend-sdk-and-is -not-su sin suerte. ¿Alguna idea? – Snoopy
RichTextBox.AppendText("String")
RichTextBox.ScrollToCaret()
Cuando estaba añadiendo a RichTextBox.text, ScrollToCaret() no funciona .
RichTextBox.text = RichTextBox.text + "String"
RichTextBox.ScrollToCaret()
'ScrollToCaret' es para un WinForms' RichTextBox', no un WPF. Hay una pregunta al respecto aquí: [El cuadro de texto enriquecido se desplaza hacia abajo cuando se escriben nuevos datos] (http://stackoverflow.com/questions/9416608/rich-text-box-scroll-to-the-bottom- when-new-data-is-written-to-it) –
- 1. ¿Cómo hacer coincidir una cadena, ignorando la nueva línea final?
- 2. ¿Cómo agrego una nueva línea usando printf?
- 3. ¿Cómo puedo hacer que un hipervínculo funcione en un RichTextBox?
- 4. de lectura hasta el final de una línea en C++
- 5. El desplazamiento está deshabilitado cuando agrego un UIPangesturerecognizer a UIScrollView
- 6. Deshabilitar el desplazamiento automático RichTextBox
- 7. ¿Cómo agrego una nueva línea en formato html en android?
- 8. ¿Cómo puedo abandonar un IEnumerator sin iterar hasta el final?
- 9. ¿Cómo agrego una nueva línea al error de flash?
- 10. Desplazamiento al final de una sola línea WPF TextBox
- 11. Grails: error Native2ascii cuando agrego una nueva propiedad a message.properties
- 12. Hacer que un JScrollPane se desplace automáticamente hasta el final
- 13. Agregar una nueva línea al final de un JtextArea
- 14. ¿Cómo hacer que echo interprete escapes de barra invertida y no imprimir una nueva línea final?
- 15. hacer coincidir parte de una cadena hasta que llegue al final de la línea (python regex)
- 16. ¿Cómo evitar que grep imprima una nueva línea final?
- 17. ¿Hay alguna manera de hacer que NetBeans garantice una nueva línea al final de un archivo?
- 18. Desplazamiento horizontal de RichTextBox no funciona
- 19. ¿Cómo agrego una nueva línea a un formulario de Windows TextBox?
- 20. reproducir una macro vim hasta el final del búfer
- 21. ¿Cómo borrar hasta el final del delimitador?
- 22. ¿Cómo leer una línea de stdin, bloqueando hasta que se encuentre la nueva línea?
- 23. ¿Cómo puedo hacer una línea Cuando la declaración en haml
- 24. Adición de texto en una nueva línea en WPF RichTextBox en tiempo de ejecución
- 25. Eliminar nueva línea del final del archivo
- 26. Python: Metaclasses hasta el final
- 27. Calcular desplazamiento para ScrollToVerticalOffset desde el número de línea en un WPF RichTextBox
- 28. ¿Cómo puedo cortar una subcadena de una cadena hasta el final usando Javascript?
- 29. WPF ListBox Desplácese hasta el final automáticamente
- 30. líneas de impresión en el archivo desde la línea de partido hasta el final del archivo
posible duplicado de [RichTextBox de desplazamiento en la parte inferior verticall \ [WPF \]] (http://stackoverflow.com/questions/4256129/verticall-scroll-richtextbox-on-the-bottom-wpf) –