问题标签 [flowdocumentreader]
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.
wpf - 使用 XmlWriter 用命名空间写出 FlowDocument xaml
我有一组需要转换为 .xaml 文件的数据,该文件以后可以作为 FlowDocument 加载到 FlowDocumentReader 中。我不直接实例化 Paragraphs、Runs,而是生成 xaml 以便稍后创建文档。
我试过的:
我遍历数据,为 Paragraphs、Runs、InlineUIContainers 等创建 XElements,并很好地构建 FlowDocument 结构,然后调用:
在消费应用程序中,我这样做:
但是加载失败,因为它不知道 FlowDocument 是什么。FlowDocument 元素如下所示:
(那里没有命名空间来说明读入 FlowDocument 时它是什么。)
如果我手动编辑 .xaml 并将元素修改为:
<FlowDocument xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
Name="testDoc">
然后它会加载得很好。
在为 FlowDocument 创建 XElement 时,我尝试这样做:
但这也不起作用 - 如果我尝试创建命名空间属性,则会出现错误。
我可以完全作弊并将 xmlns 填充到元素中,然后调用类似的东西
但这感觉很脏,所以我认为我只是做错了。
想法?
更新:
虽然这可能不是解决问题的规范性解决方案,但它确实有效:
通过向 XamlReader 添加ParserContext,我能够解决加载 FlowDocument xml 的问题。
wpf - 将菜单项添加到 FlowDocumentReader ContextMenu
FlowDocumentReader 在其 ContextMenu 中有两个菜单项,复制和全选。我想添加一个额外的 MenuItem 并尝试过:
另外我试过这个:
我不清除上下文菜单中的项目并尝试附加它。这些都不起作用。
我可以像这样创建自己的菜单:
这会显示出来,但我想要的是复制和全选菜单项以及 A 和 B。
想法?
wpf - 如何防止 XamlReader.Load(xamlFile) 插入额外的 Run 元素?
想象一下,我有一个这样的 FlowDocument:
我像这样加载它:
这是什么结果:
虽然我想看到的是这样的:
但是在查看监视窗口中的 FlowDocument 时,我看到它在它们之间插入了 Runs,它们的内容本质上是一个空格,因此我在段落中没有我期望的 3 个内联,而是有 5 个。
如何避免插入那些空白运行?
注意:我不能真正将这三个运行分组为一个,这将是一个简单的答案,因为它们需要保持单独的对象。
想法?
解决方案:正如 Aaron 在下面正确回答的那样,将 Runs all 分组在一行上可以解决此问题。顺便说一句,该文档是根据其他数据动态构建的(比我的示例更复杂),并使用 XmlWriterSettings 属性 Indent 设置为 true 的 XmlWriter 写出(因为更容易看到输出而不是全部一起运行)- 将其设置为 false 会在 XamlReader 读入时消除那些额外的运行。
wpf - 为什么我不能粘贴从 WPF FlowDocumentScrollViewer 或 Reader 复制的文本?
在上一个问题中,我试图找出如何将 ObservableCollection 绑定到控件,这样我就可以看到所有字符串并选择所有字符串并从内容控件中复制它们。通过使用以下 XAML,该问题的答案最终让我得到了我想要的外观(以及看似行为)。(我尝试了 FlowDocumentReader 和 FlowDocumentScrollViewer - 它们的行为相同。)
ErrorMessages是我的 ViewModel 属性,它返回ObservableCollection<string>。它正确绑定到ItemsSource并且<Run>元素绑定到集合中的每个字符串。看起来不错,可以用很久。这是如此接近我将我的最后一个问题标记为已回答,但我仍然有一个问题。
我右键单击并显示一个带有“全选”和“复制”选项的菜单。使用Select All确实会突出显示所有文本,选择Copy不会出现任何错误,但是当我转到 NotePad(或 Word、TextPad 等或表单上的 RTB)并尝试粘贴文本时,什么也没有出现。作为 WPF 的新手,我怀疑我做错了什么,但我不知道它是什么。没有“无视”文字这样的东西吗?
[编辑-2011 年 6 月 22 日] 由于其他原因,我已将代码更改为通过 ItemsControl 内的 ItemTemplate 使用 TextBlock,如下所示,但我仍然无法复制和粘贴。
wpf - WPF 绑定 IsAsync 失败
拥有一个大多数属性非常轻量级的对象 - 最多 200 个字符的文本。一个属性是 FlowDocument,它可能很大并且想要异步检索它。当我设置 Async = True 并显示以下消息时它失败:“调用线程无法访问此对象,因为不同的线程拥有它。”
Production Get 更复杂,但在 IsAsyc True 上同样失败,即使使用简单的硬编码 FlowDocument。
它确实调用 SelectedDoc.DocFlowDocument 并返回文档!使用 IsAsync = False 它运行得很好。我认为问题在于静态源,但显然我不知道如何解决它。
当 GabeLib 启动时,它会从数据库中读取应用程序和用户设置。
如果有更好的方法来解决这个问题,我会试一试。由于 FlowDocument 可以是 3 mb 并且所有其他属性 10K 结合起来,这对性能有很大影响,最常用的按钮是下一个对象。FlowDocument 来自 SQL 中的 varchar(max),并使用换行符和突出显示的单词进行格式化。它不仅很大 - 与其他房产相比,它也很昂贵。
FlowDocumentReader 本身似乎有一些异步支持,因为在大型文档上我快速获得第一页,然后页面以大约 100/秒的速度加载。但我仍然希望它在检索到所有其他属性后获得第 1 页。
问题正如马丁所说“由于 FlowDocument 是一个调度程序对象,它只能从创建它的线程访问”。
解决方案是序列化为 XAML 字符串。
使用转换器绑定到字符串
转换器
wpf - FlowDocumentScrollViewer 与 FlowDocumentPageViewer
我有 2 种可能的方式来显示我的 FlowDocument:
FlowDocumentScrollViewer
优势:
- 这只是向我展示数据,而不关注页面,因此用户只需滚动浏览所有内容。在打印时,我可以添加页眉和页脚,并在那里确定页面。
- 当我调整我的窗口大小时,内容正确地保持在 100% 缩放,正如我想要的那样。
缺点:
- 有很多数据它只是崩溃,它似乎一次呈现所有控件,或者什么。
FlowDocumentPageViewer
优势:
- 有大量数据,它仍然很快。
缺点:
- 它为我决定页面,这是无关紧要的。
- 当我调整窗口大小时,内容会缩小以适合窗口。这使得内容很快变得不可读。对此的可能解决方法是使用 ScrollViewer 围绕控件,该控件有效。但是当您向下滚动查看底部页面内容时,最后会转到下一页,如果您向上滚动太多,则会转到上一页,非常烦人。
我最终想要的是 FlowDocumentScrollViewer,但加载时间很快。
有人对此事有任何想法/提示吗?非常感激!
wpf - WPF XPS 编辑
我喜欢 DocumentViewer 在 WPF 应用程序中显示 XPS 文档。但我还需要编辑 XPS 文档。我找到了用于编辑 XPS 的独立应用程序 (.exe)。我需要的是用于查看和编辑 XPS 的 WPF 控件。或 DocumentViewer 的扩展以进行编辑。编辑必须实际删除数据,而不仅仅是隐藏它(这是针对诉讼申请)。有谁知道在 WPF 中查看和编辑 XPS 的方法?
wpf - 如何将 ListView 附加到 WPF FlowDocumentReader?
我有一个列表视图,我需要将此列表视图表附加到 FlowDocumentReader 中,任何人都可以帮助我如何做到这一点。
谢谢,@nagaraju。
wpf - 如何仅使用 XAML 将资源从树视图绑定到 flowdocumentreader?
这次我正在开发一个帮助窗口迷你应用程序(包括在另一个项目中,即图像编辑应用程序)。
我有一个包含两列的网格,中间有一个 gridsplitter。在左侧,我有一个带有多个节点的树视图(在 XAML 中设置),在右侧有一个 flowdocumentreader。
我有大约 10 个资源字典来保存我的文档,每个节点一个,我想在我的 flowdocumentreader 中显示。我实际上不知道如何绑定它!有人知道我该怎么做吗?到目前为止我的代码(只添加了一个资源字典)
wpf - 如何在 FlowDocument 中启用超链接?
我的数据库中有 .htm 文件,这些文件被转换为 FlowDocument 并放入 FlowDocumentReader 以供查看。.htm 文件内部有超链接:1)内部(到文档的其他片段)2)外部(到我的数据库中的其他 .htm 文档,按文档名称)。转换并放入 FlowDocumentReader 后,超链接为蓝色并带有下划线,但是当我单击它们时没有反应。包含上述超链接的简化 .htm 代码如下:
放置在 FlowDocumentReader 中的 FlowDocument 生成的代码如下所示:
我应该怎么做才能“唤醒”我的 FlowDocumentReader 中的超链接?任何帮助表示赞赏!先感谢您!