Domanda

In un'applicazione WPF, voglio creare un " Trova nei file " riquadro di output, in cui posso eseguire lo streaming di grandi quantità di testo, senza riassegnare la memoria su ciascuna riga, come farebbe TextBox .

Il TextBox WPF ha una singola proprietà Text che memorizza una stringa contigua. Ogni volta, voglio aggiungere contenuti, devo fare textBox.Text + = " New Text " , il che è negativo.

Idealmente, quel controllo sarebbe virtuale e richiederebbe un minimo di risorse, solo per le linee visibili.

Ho pensato di utilizzare un ListBox standard con un VirtualizingStackPanel , ma non consente la selezione del testo su più righe.

(Ad ogni nuova riga aggiunta, voglio che il controllo si aggiorni)

Qualche suggerimento?

È stato utile?

Soluzione

Se nella tua applicazione non ti aspetti più di diecimila risultati di ricerca, un controllo TextBlock o TextBox multilinea di sola lettura sarà di gran lunga sufficiente.

La classe TextBox ha un metodo AppendText () che dovrebbe essere abbastanza veloce per te.

Se hai bisogno di evidenziare / formattare il testo, forse vuoi usare RichTextBox.

Altri suggerimenti

Se hai contenuti davvero grandi, sfortunatamente tutta la casella di testo WPF e controlli simili sono molto lenti. Vedi questa domanda . Puoi utilizzare AvalonEdit in sostituzione.

Hai considerato o provato RichTextBox controllo?

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top