我的目标是使编辑器的行为类似于MS-Word.Wpf RichTextBox是一个很棒的控件。通过将它放在ScrollViewer中,我们可以使它可编辑。(就像一个记事本)。但我需要MS-像页面一样的字。一种有效的方法可能是将样式应用于scrollViewer,以便我们在richtextbox上创建多个页面的外观和感觉,但我不知道该怎么做。我们在项目中做的是使用documentViewer。在FixedPage内,创建一个Header(Canvas),Body(WpfRichTextBox),Footer(Canvas)。因此创建多个页面,并通过订阅RichTextBox sizechanged事件,我们手动进行分页,即在高度发生变化时将块从一个页面移动到另一个页面。你有没有看到更好的方法呢?使用多个richtextbox会妨碍我的表现吗?
答案 0 :(得分:1)
@WpfProgrammer这是我会说的好方法。假如你有1000页,那肯定会出现性能问题。为了避免这个问题,您需要进行请求分页。
虚拟寻呼:
1.您需要构建一个包含页面的页表。每个页面都包含有关页面的控件,图像,位置,尺寸和样式的信息。 [所有可序列化数据]
2.虚拟页面 - 您需要
反序列化所有数据
页面并创建一个页面
RichTextBox的。虚拟页面是
只是,预先缓存的页面
将被渲染。说的
例。如果我在第一页。然后,
我将在接下来的3个系列化
连续的页面并将它们放在一个
采集。然后,重复一遍
连续页面的程序
动作。使用添加一些逻辑
最常用的集合。它
会足够快。如果是
1000页。你可以崩溃
那些不脏或从未访问过的人
页面。这可能会产生更多
性能。如果表现很远
更关注低硬件。
然后,你应该考虑
清洗。
3.清洁 -
清洁是一个过程
识别LFU页面并删除
他们。如果,这将非常有用
表现更为明显。
答案 1 :(得分:1)
嗨Tameem 将richTextBox的最小高度和宽度设置为A4大小(比如说)。订阅RichTextBox Size Changed事件。一旦内容超出,就会触发此事件。然后我将上一页的最后一个块推送到下一页的第一个块。(请记住,如果页面不存在,则需要创建然后将焦点添加到新页面。(因为如果您在最后一个RTB按Enter键,您希望焦点位于新页面中。)删除某个页面中的一个块(比如说第二个),然后你需要将所有底页块添加到这个页面,这样我们的分页逻辑就会再次按下块并进行调整。如果您需要进一步的帮助,我可以分享一些代码。