【问题标题】:Binding list of paragraphs to RichTextBlock将段落列表绑定到 RichTextBlock
【发布时间】:2015-09-25 05:31:56
【问题描述】:

现在,我有我需要绑定到 RichTextBlock 的数据,但我无法格式化它,因为我只是在我的 @ 中的段落设置中使用绑定到 run 的一个长字符串987654323@。显然,这并不理想。我希望能够更改某些单词的字体大小或字体粗细,但我目前的方法无法做到这一点。

<RichTextBlock TextAlignment="Justify" TextWrapping="WrapWholeWords" Name="richTB">
    <Paragraph>
        <Run Text="{Binding}" />
    </Paragraph>
</RichTextBlock>

我知道我可以在后面的代码中创建一个RichTextBlock,然后手动向其中添加段落,但我将如何绑定它?因为它在我的page.resources

【问题讨论】:

  • 绑定源是什么?我的意思是,如果它是纯文本,那么您打算如何获取格式信息(这一行是粗体,这一行是斜体等)?如果它是一个 RTF 文档,那么您需要执行从 RTF 到 XAML 流文档的手动转换(例如,通过将绑定转换器附加到 RichTextBlock.Blocks 属性)。
  • 目前,它只是一个非常长的字符串。但是我可以很容易地把它改成一堆可以格式化的paragraph,我就是不知道怎么绑定。

标签: c# .net xaml uwp richtextblock


【解决方案1】:

不幸的是,如果您想对字符串进行自定义格式设置,则无法真正绑定它。 XAML 构建这些控件,而您无法真正通过绑定以您想要的方式生成这些控件。

您可以做的是为您的控件连接一个 OnLoad 事件处理程序,并通过 C# 注入任何段落/运行控件。

【讨论】:

  • 它必须被绑定。我不能注入这些段落,因为它是一个资源控制。在页面上最多重复 10 次。
  • 是的,没有太多选择。最好的方法可能是为每个 RichTextBox 连接相同的加载事件。这样就不会重复代码了。
【解决方案2】:

我相信您{绑定}了源代码,因此在代码中,您可以从这段代码中获得帮助:

Paragraph para = new Paragraph();
            para.Inlines.Add(new Run { Text = sample, FontSize = 15 });            
            rtb.Blocks.Add(para);

其中 rtb 是一个富文本块。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-20
    相关资源
    最近更新 更多