Отображение номеров строк в RichEditBox UWP
Я хотел бы знать, возможно ли показать номера строк (в отдельном столбце) RichEditBox в UWP C#, или есть ли другие способы получить его. Я ищу решение этой проблемы... И мне кажется странным, что нет документации об этом: мне нужен только простой текстовый редактор. Есть много приложений для Windows 10, которые реализуют это, и я отказываюсь думать, что это невозможно.
Это всего лишь пример из CodeWriter, приложения для редактирования кода. Любая идея?
1 ответ
Я достигаю "результата", думая о списке и RichEditBox. Теперь, решение не очень хорошее, после примерно 50 строк, набирающих текст до чертиков, но, по крайней мере, я попытался, потому что вопрос важен и для меня.
Итак, я разработал ListView и RichEditBox в сетке с двумя столбцами
<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>
В коде позади я добавил это:
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("");
}
}
}
}
Я думаю, что метод.clear() и чтение всех строк каждый раз не является хорошей практикой. Но если вам нужно быстрое решение на макс. 50 линиях, это МОЖЕТ быть способом.