2016-09-23 1 views
-1

Je poste ce texte afin que le code soit accessible à quiconque le trouve utile.Ajout de texte à un TextBlock, un caractère à la fois

Code légèrement réduit basé sur la suggestion de Noctis.

StringBuilder DescriptionText = new StringBuilder(); 

async void RunDescription(StringBuilder description) 
{ 
    DescriptionText = description; 

    await Task.Delay(1000); // Short delay before the text starts printing so the window has time to load 

    new Thread(AddTextToTextBlock).Start(); 
} 

void TextBlockDispatcher(string text) 
{ 
    TextBlock1.Dispatcher.BeginInvoke(DispatcherPriority.Normal, new Action(() => TextBlock1.Inlines.Add(text))); 
} 

void AddTextToTextBlock() 
{ 
    foreach (char c in DescriptionText.ToString()) 
    { 
     Thread.Sleep(30); 
     TextBlockDispatcher(c.ToString()); 
    } 
} 
+1

Le code de travail pour lequel vous souhaitez donner votre avis ou faire des suggestions, appartient à codereview.stackexchange.com. Même là, vous devez fournir un bon [mcve] qui illustre clairement les aspects que vous voulez commenter. Stack Overflow est pour des problèmes spécifiques et pratiques avec le code. –

+1

Je vote pour fermer cette question hors-sujet parce qu'elle appartient à codereview.stackexchange.com – Jeff

+0

@PeterDuniho Merci, je garderai cela à l'esprit dans le futur. – Cusha

Répondre

2

Cela ressemble aux cerceaux habituels que vous devez traverser. La seule chose que je pourrais envisager de changer est d'appeler le répartiteur, puis de vérifier s'il a accès, en l'appelant directement sur votre objet. Il devrait ressembler un peu comme:

TextBlock1.Dispatcher.BeginInvoke((Action)(() => /* logic here */) 

vous épargnerez un appel, mais même même vraiment. Vous aurez besoin de le masser, puisque c'est du haut de ma tête, mais il devrait vous diriger dans la bonne direction.

+0

Si vous avez vu mon dernier commentaire, ne vous méprenez pas. Il a oublié quelque chose de stupide. Votre suggestion a bien fonctionné, mais je pense que je pourrais encore avoir besoin d'au moins une autre méthode, ce qui est bien. – Cusha