【问题标题】:Is it possible to assign value to a precreated Paragraph in RichTextBox是否可以在 RichTextBox 中为预先创建的段落赋值
【发布时间】:2011-11-18 12:17:24
【问题描述】:

考虑以下 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>

我想做的是,按照 XAML 中的定义,直接将一个以编程方式创建的 Paragraph 分配给 dataParagraph

其代码如下所示:

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.

我试过了,还是不行。到目前为止,我阅读的示例似乎都以编程方式创建了FlowDocumentParagraph,然后将 Runs' 分配给它们。有没有可能按照我实现的方式实现。

【问题讨论】:

  • 看来,如果我只声明 RichTextBox 并绑定 Document、Paragraph 并以编程方式运行,它就可以工作。

标签: c# wpf xaml richtextbox paragraph


【解决方案1】:

您不能将 XAML 中声明的段落替换为新段落,但您可以直接使用它。

保持您的 XAML 不变,将您的代码更改为此,它将起作用:

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

或者,只需将新段落添加到FlowDocument,而不是尝试将其分配给现有段落。

【讨论】:

  • 我采用了艰难的方法来解决它,即从头开始创建整个事物。但如果我以前知道的话,这就是我会做的事情:)。也许,我可以稍后重构我的代码并使用这种技术。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-11-05
  • 2020-08-30
  • 1970-01-01
  • 2021-05-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多