Ich erreiche ein "Ergebnis" über eine Liste und die RichEditBox nachzudenken. Nun, die Lösung ist nicht gut, nach etwa 50 Zeilen Tippen ist es laggy als Hölle, aber zumindest habe ich versucht, 'cos die Frage ist auch wichtig für mich.
So entwarf ich ein Listview und RichEditBox in einem Raster mit zwei Spalten
<ScrollViewer>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
</Grid.ColumnDefinitions>
<ListView Grid.Column="0" Name="LineNumbers" ScrollViewer.VerticalScrollMode="Disabled" ScrollViewer.VerticalScrollBarVisibility="Disabled"></ListView>
<RichEditBox Grid.Column="1" x:Name="RebText" TextChanged="RebText_TextChanged" ScrollViewer.VerticalScrollMode="Disabled" ScrollViewer.VerticalScrollBarVisibility="Disabled"></RichEditBox>
</Grid>
</ScrollViewer>
Am Code hinter ich diese hinzugefügt:
private void RebText_TextChanged(object sender, RoutedEventArgs e)
{
//Clear line numbers
LineNumbers.Items.Clear();
int i = 1;
//Get all the thext
ITextRange text = RebText.Document.GetRange(0, TextConstants.MaxUnitCount);
string s = text.Text;
if (s != "\r")
{
//Replace return char with some char that will be never used (I hope...)
string[] tmp = s.Replace("\r", "§").Split('§');
foreach (string st in tmp)
{
//String, adding new line
if (st != "")
{
LineNumbers.Items.Add(i++);
}
//No string, empty space
else
{
LineNumbers.Items.Add("");
}
}
}
}
Ich denke, die .clear() -Methode und Alle Zeilen jedes Mal zu lesen ist keine gute Übung. Aber wenn Sie eine schnelle Lösung auf maximal 50 Zeilen benötigen, ist dies vielleicht der Weg.
* "Ich suche nach einer Lösung für dieses Problem." - Welche? Sie haben nach zwei verschiedenen Funktionen gefragt: Anzeigen von Zeilennummern und Abrufen von Zeilennummern (vermutlich aus dem Inhalt). – IInspectable
Ich hätte gerne eine Spalte auf der Seite der Richeditbox, die Zeilennummern anzeigt. Die Tatsache, Zeilennummern erhalten zu müssen, kann abhängig von der Implementierung sein oder nicht. Dies sind alte und ineffiziente Lösungen, die ein Stackpanel mit Inhalten verwenden, die während der Textbearbeitung aktualisiert wurden. – GiacomoFrisoni
Kann das nicht ... Ich habe versucht, Lösungen mit einem ListView, aber es scheint so hässlich, dass ich dieses Projekt und Repo gelöscht habe, die ich dafür gemacht habe. Wirklich niemand hat Idee, wie man LINE NUMBERS mit einer RichEditBox (nicht RichTextBox!) Handhabt? – Martinocom