Notre application démarre plusieurs processus d'arrière-plan et place leur sortie dans TextBoxes, chacun dans un TabItem distinct dans un TabControl. Je veux que les zones de texte pour faire défiler automatiquement pour afficher la dernière ligne de sortie, de sorte que dans la fonction de traitement des données qui ajoute la ligne de sortie/erreur à la zone de texte, je l'appelle également TextBox.ScrollToEnd():TextBox.ScrollToEnd ne fonctionne pas lorsque la zone de texte est dans un onglet non actif
void OnServerProcessOutputDataReceived(object sender, DataReceivedEventArgs e)
{
if (e.Data != null)
{
Dispatcher.Invoke(new Action(() =>
{
TextBox tb = getServerProcessOutputTextBox(sender);
if (tb != null)
{
tb.AppendText(e.Data + Environment.NewLine);
tb.ScrollToEnd();
}
}));
}
}
Cela fonctionne super pour le TextBox dans l'onglet actif, mais quand je passe à un autre onglet, je vois qu'il n'a pas été fait défiler jusqu'à la fin.
Est-ce un problème connu? Y a-t-il un moyen de le réparer?
Voici une réponse pour savoir comment faire ceci: http://stackoverflow.com/questions/4055720/scrolling-to-the-end-of-a-single-line-wpf-textbox –