【问题标题】:MS Word pagination using Multiple wpf RichTextBox使用多个 wpf RichTextBox 的 MS Word 分页
【发布时间】:2010-12-19 20:01:48
【问题描述】:

我的目标是让编辑器的行为类似于 MS-Word。Wpf RichTextBox 是一个很棒的控件。通过将它放在 ScrollViewer 中,我们可以使其可编辑。(就像记事本一样)。但我需要 MS- Word like pages。一种有效的方法可能是将样式应用于scrollViewer,这样我们就可以在richtextbox 上创建多个页面的外观,但我不知道该怎么做。我们在项目中所做的是使用documentViewer。在 FixedPage 中,创建一个 Header(Canvas)、Body(WpfRichTextBox)、Footer(Canvas)。因此创建多个页面,并通过订阅 RichTextBox sizechanged 事件,我们手动进行分页,即当高度发生变化时将块从一页移动到另一页。你有没有更好的方法来做到这一点?使用多个富文本框会影响我的性能吗?

【问题讨论】:

    标签: wpf richtextbox


    【解决方案1】:

    @WpfProgrammer 这是我想说的好方法。假设您有 1000 多个页面,那么肯定会出现性能问题。为了避免这个问题,您需要进行按需分页。

    虚拟寻呼:
    1.您需要构建一个页表,其中将包含页面。每个页面将包含有关页面的控件、图像、它们的位置、尺寸和样式的信息。 [所有可序列化的数据]

    2. 虚拟页面 - 你需要 反序列化所有数据 页面并创建一个页面 富文本框。虚拟页面是 只不过是预先缓存的页面 将被渲染。说为 例子。如果我在第一页。然后, 我将反序列化下一个 3 连续的页面并将它们放在一个 收藏。然后,重复这个 连续页程序 动作。添加一些逻辑使用 最常用的集合。它 会足够快。如果是 1000 页。你可以折叠 那些不脏或从未访问过的 页。这可能会产生更多 表现。如果性能远 更关心低硬件。 那么,你应该考虑 清洁。

    3. 清洁 - 清洁是一个过程 识别 LFU 页面并删除 他们。这将非常有帮助,如果 性能更显着。

    【讨论】:

    • 非常感谢页面虚拟化方法。对我来说,每个编辑器的最大页数不会超过 50。可能会启动 2 到 3 个编辑器,但我认为虚拟化确实提高了整体性能。我看到的挑战是分页,尽管我有一个基本的算法。将块从一个richtextbox移动到另一个,甚至在删除操作期间将内容向上流动是一个挑战。在这种情况下进行虚拟化也很棘手。难道没有像MS Word那样直接显示richTextBox页面的方法吗?
    • 我正在收听richTextBox size changed 事件并将块从一个rtb推送到另一个rtb,这个过程对所有rtb重复。在删除过程中,在删除发生的页面上,我添加了所有块从随后的 rtb 从底部到此页面,以便它们再次相应地重新调整。
    • 1) “将块从一个富文本框移动到另一个,甚至在删除操作期间将内容向上流动是一个挑战” - 这是布局。它需要以这种方式完成。 2)“有没有像MS Word那样直接显示richTextBox页面的方法” - 据我所知,没有特殊的方法。
    • 我仍然相信在滚动查看器中使用单个 rtb 并使用内容模板来显示边框以使其错觉页面是更好的方法。但它虽然有些挑战。我认为 Telerik rtb 是这样的。
    【解决方案2】:

    嗨,Tameem 将 RichTextBox 的最小高度、宽度设置为 A4 大小(比如说)。订阅 RichTextBox Size Changed 事件。一旦内容超过,这个事件就会被触发。然后我把上一页的最后一个块推送到下一页的第一个块。(记住如果页面不存在,你需要创建新页面然后将其添加为第一个块)。并且焦点应该更改为新页面。(因为如果您在最后一个 RTB 上按 Enter,您希望焦点在新页面中。)当用户删除某个页面中的一个块(比如第二个),然后你需要将底部页面的所有块添加到这个页面,这样我们的分页逻辑就会再次将块向下推并调整。如果您需要进一步的帮助,我可以分享一些代码。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-09-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多