Форматирование текста в RichtextBox WPF - PullRequest
2 голосов
/ 23 ноября 2010

Я пытаюсь отформатировать текст в richTextBox, как в чате Skype.

1.column-"Nick"         2.column-"Text of Messange"                3.column-"DateTime" 

Я хочу союзник 1. Максимальный столбец слева и 3. Максимальный столбец справа.

Как лучше всего это сделать? Я использую WPF.

1 Ответ

1 голос
/ 26 декабря 2010

Мое решение:

Простое решение - создать объект Table и добавить в блоки richtextbox, что-то вроде этого:

        var tab = new Table();

        var gridLenghtConvertor = new GridLengthConverter();

        tab.Columns.Add(new TableColumn() { Name = "colNick", Width = (GridLength)gridLenghtConvertor.ConvertFromString("*") });
        tab.Columns.Add(new TableColumn { Name = "colMsg", Width = (GridLength)gridLenghtConvertor.ConvertFromString("5*") });
        tab.Columns.Add(new TableColumn() { Name = "colDt", Width = (GridLength)gridLenghtConvertor.ConvertFromString("*") });

        tab.RowGroups.Add(new TableRowGroup());
        tab.RowGroups[0].Rows.Add(new TableRow());

        var tabRow = tab.RowGroups[0].Rows[0];


        tabRow.Cells.Add(new TableCell(new Paragraph(new Run(rpMsg.Nick))) { TextAlignment = TextAlignment.Left });

        tabRow.Cells.Add(new TableCell(ConvertToRpWithEmoticons(rpMsg.RpText)));

        tabRow.Cells.Add(new TableCell(new Paragraph(new Run("Cas"))) { TextAlignment = TextAlignment.Right });

        RtbConversation.Document.Blocks.Add(tab);
...