问题标签 [flowdocument]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
2886 浏览

wpf - WPF FlowDocument:强制计算高度等“屏幕外”

我的目标:一个 DocumentPaginator,它接受一个带有表格的 FlowDocument,它拆分表格以适应页面大小并在每个页面上重复页眉/页脚(特殊标记的 TableRowGroups)。

为了拆分表格,我必须知道其行的高度。

通过代码构建 FlowDocument 表时,TableRows 的高度/宽度为 0(当然)。如果我将此文档分配给 FlowDocumentScrollViewer(设置了 PageSize),则会计算高度等。如果不使用 UI 绑定对象,这可能吗?实例化未绑定到窗口的 F​​lowDocumentScrollViewer 不会强制分页/计算高度。

这就是我确定 TableRow 高度的方式(它非常适用于 FlowDocumentScrollViewer 显示的文档):

编辑:我将 FlowDocumentScrollViewer 添加到我的示例中。“排列”的调用强制 FlowDocument 计算其高度等。我想知道 FlowDocumentScrollViewer 对 FlowDocument 做了什么,所以我可以在没有 UIElement 的情况下做到这一点。可能吗?

0 投票
1 回答
3058 浏览

wpf - 如何获取 WPF FlowDocument 的选定文本?

我正在使用 .NET 3.5

我在 FlowDocumentScrollViewer 中有一个 FlowDocument。我没有使用 RichTextBox。FlowDocument 带有许多“赠品”,包括文本选择和用于复制/粘贴的上下文菜单。

如何找出 FlowDocument 中当前选择的文本?我想我可以使用 ApplicationCommands.Copy 将文本放入剪贴板,然后从那里读取它,但如果不需要,我不想更改剪贴板的内容。

一定有什么我错过了......

0 投票
2 回答
2366 浏览

c# - 从后面的代码导航到流文档中的特定片段

我有一个 WPF 页面用作输入表单,其中一侧包含许多控件,另一侧包含流文档阅读器。

我想将此文档阅读器的内容设置为在加载表单时加载的流文档的特定部分(通过加载的事件)。

我发现一篇文章解释了如何使用片段来执行此操作,但显示的示例仅以 XAML 表示。

在我的情况下,当用户将焦点放在一个控件上时,我需要更新流文档阅读器的文档属性(我已经连接了事件),因此我需要在后面的代码中而不是 XAML 中执行此操作。

我尝试将文档属性设置为:

其中 Document 是 XAML 流文档的名称,而 Control_Sport 是我需要导航到的片段的名称。

但是,这会产生错误,它不喜欢井号存在。

我尝试查看 MSDN,但仅查看其 XAML。有没有办法通过代码做到这一点?

任何帮助,将不胜感激。

菲利克斯,

链接到 MSDN 文章:http: //msdn.microsoft.com/en-us/library/ms750478.aspx#FragmentNavigation

0 投票
1 回答
1451 浏览

wpf - 为 WPF 的 FlowDocumentReader 添加书签

我正在尝试在 FlowDocumentReader 中保存和恢复文档的位置以创建书签功能。似乎没有任何可公开访问的搜索或搜索功能内置,让我有以下选择:

  1. 改用 FlowDocumentPageViewer,每次调整窗口大小时保存页面,并在重新加载应用程序后立即恢复。

  2. 循环遍历 FlowDocumentReader 的 Document 属性中的所有元素,查找第一个通过屏幕命中测试的元素,然后使用反射使用内部搜索功能在稍后将该文本重新显示在视图中。

  3. 序列化整个控件。

  4. 编写我自己的文档查看器控件。

第一很烦人,因为我不得不放弃 FlowDocumentReader 的两页和滚动查看选项。这也意味着在用户有机会调整窗口大小之前寻找保存的页面。这很脆弱,如果用户说在会话之间切换分辨率,它可能会中断。

2 号是一个花哨的 hack,它可能会起作用,但如果内部结构发生变化,它会很慢并且完全崩溃。

3 号看起来是我最好的选择,但它只能让我保存/恢复当前位置,不能设置任意书签。

第 4 号工作量太大。这些控件非常棒,我只需要这个功能......

还有其他方法可以解决这个问题吗?

0 投票
1 回答
927 浏览

wpf - 我的自定义 WPF RIchTextBox 将不接受用户输入,即使设置 IsReadOnly=false

我写了一个自定义的可绑定富文本框,所以我可以绑定到 Document 属性。

但是,一旦我设置了文档内容,它接受的唯一键盘输入就是退格键 (???)。没有其他键盘输入被确认(包括箭头键)。

有任何想法吗?

这是我的 BindableRTB 类的代码:

结束类

0 投票
1 回答
2155 浏览

c# - 如何将 FlowDocument 添加到 StackPanel?

我创建了以下,以便以一种简单的方式在 WPF 文档中显示格式化文本。

但是,此解决方案返回一个FlowDocument,并且我无法将此 FlowDocument集成到我当前的应用程序中,在该应用程序中,我只是将TextBlocks添加到 StackPanels 和 WrapPanels 和边框等。

如何将创建的 FlowDocument 对象添加到现有的 StackPanel、Borders 和 WrapPanel?

替代文字 http://www.deviantsart.com/upload/11jt33i.png

0 投票
1 回答
619 浏览

c# - 如何将多个 FlowDocumentReader 添加到 StackPanel?

感谢Leom 的回答,我能够通过将FlowDocument包装在FlowDocumentReader中来将其添加到StackPanel中。

但是现在我有两个问题:

  • 似乎添加了第一个 FlowDocumentReader,其余的被忽略了
  • 有一个我无法摆脱的多余边距

如何在没有多余边距的情况下将多个 FlowDocumentReaders 添加到 StackPanel?

替代文字 http://www.deviantsart.com/upload/1ndiqqe.png

XAML:

代码背后:

0 投票
2 回答
8666 浏览

c# - 如何获取 FlowDocument 超链接以启动浏览器并转到 WPF 应用程序中的 URL?

WPF 应用程序中的以下代码创建了一个超链接,其外观和行为类似于超链接,但在单击时不执行任何操作。

我必须更改什么,以便当我单击它时,它会打开默认浏览器并转到指定的 URL?

替代文字 http://www.deviantsart.com/upload/4fbnq2.png

XAML:

代码背后:

0 投票
2 回答
28832 浏览

.net - 如何在 WPF 应用程序中生成 FlowDocument 的“打印预览”?

我的各种 WPF 应用程序显示 FlowDocument 的。我可以使用打印 WPF FlowDocument的答案中描述的方法打印它们。

现在我想添加一个“打印预览”功能。在正常情况下,我正在打印窗口中显示的 FlowDocument,因此我不需要打印预览。但在某些情况下,要打印的 FlowDocument 是在内存中动态构建的。在这些情况下,我想在打印之前显示它。

现在,我当然可以弹出一个新窗口并显示 FlowDocument,但是

  1. 我希望预览真的感觉像是打印操作的一部分,而不仅仅是应用程序中的另一个窗口。

  2. 我不希望 FlowDocumentScrollViewer 中有一个普通的 FlowDocument。而不是“任何尺寸”,它需要被限制在纸张的尺寸、特定的 HxW 比率和分页上。

建议?

  • 我应该只使用标准窗口吗?在这种情况下,如何确保 FlowDocument 处于正确的比例?

  • 在属于 Windows 的 PrintDialog UI 范围内是否有更“集成”的方式来进行预览?

谢谢

0 投票
3 回答
5660 浏览

c# - 为什么这个流文档表总是打印 2 列

我的 WPF 应用程序中有一个 ListView,它绑定到要执行的任务集合(待办事项列表)。我希望用户能够打印他们的列表并根据 MSDN 指南创建了以下代码。(这是我第一次涉足印刷)

当我尝试使用以下代码打印时,我总是将页面从中间拆分为 2 列(每列包含表格的 3 列)。我尝试了不同的 GridLength 值,但没有成功。