Можно ли присвоить значение предварительно созданному абзацу в RichTextBox? - PullRequest
1 голос
/ 16 сентября 2011

Рассмотрим следующий код XAML :

<RichTextBox Name="dataRichTextBox" VerticalScrollBarVisibility="Auto" >
    <FlowDocument Name="dataFlowDocument" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
        <Paragraph Name="dataParagraph">

        </Paragraph>
    </FlowDocument>
</RichTextBox>

Я хотел бы прямо назначить Paragraph, созданный программно, dataParagraph, как определено в XAML .

код для этого выглядит примерно так:

Paragraph paraOne = new Paragraph();
Run run1 = new Run("I am run one"+Environment.NewLine);
// run1.Background = Brushes.Green;
paraOne.Inlines.Add(run1);
dataParagraph = paraOne; // expect that it will show up on the RichTextBox.

Я пробовал, и он не работает.Все примеры, которые я читал до сих пор, похоже создают программно FlowDocument, Paragraph, а затем присваивают им Runs.Можно ли добиться этого так, как я реализовал.

1 Ответ

1 голос
/ 17 сентября 2011

Нельзя заменить абзац, объявленный в XAML, новым, но вы можете работать с ним напрямую.

Сохраните свой XAML как есть, измените свой код на этот, и он будет работать:

dataParagraph.Inlines.Add(new Run("I am run one" + Environment.NewLine));

Либо просто добавьте новый абзац к FlowDocument, а не пытайтесь назначить его существующему абзацу.

...