标签: flowdocument

检测FlowDocument更改和滚动

我想检测(最好通过一个事件)什么时候添加,更改等任何内容FlowDocument,当它出现时我想让FlowDocumentScrollViewer显示FlowDocument自动滚动到结尾.

wpf scroll flowdocument

5
推荐指数
1
解决办法
5238
查看次数

将 XAML 转换为 FlowDocument 以在 WPF 中的 RichTextBox 中显示

我有一些 HTML,我正在使用 Microsoft 提供的库将其转换为 XAML

string t = HtmlToXamlConverter.ConvertHtmlToXaml(mail.HtmlDataString,true);
Run Code Online (Sandbox Code Playgroud)

现在,从 如何将 XAML 插入 RichTextBox?我正在使用以下内容:

private static FlowDocument SetRTF(string xamlString)
{
    StringReader stringReader = new StringReader(xamlString);
    System.Xml.XmlReader xmlReader = System.Xml.XmlReader.Create(stringReader);
    Section sec = XamlReader.Load(xmlReader) as Section;
    FlowDocument doc = new FlowDocument();
    while (sec.Blocks.Count > 0)
        doc.Blocks.Add(sec.Blocks.FirstBlock);
    return doc;
}
Run Code Online (Sandbox Code Playgroud)

然而,不幸的是,这一直在崩溃 =/ 有没有人知道如何在 RichTextBox 中显示 XAML 文本?

编辑:我正在尝试转换的 html 示例

<FlowDocument xml:space="preserve" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"><Table><TableRowGroup><TableRow><TableCell BorderThickness="1,1,1,1" BorderBrush="Black"><Table><TableRowGroup><TableRow><TableCell BorderThickness="1,1,1,1" BorderBrush="Black"><Table><TableRowGroup><TableRow><TableCell BorderThickness="1,1,1,1" BorderBrush="Black"><Paragraph>Top stories for<LineBreak />Tuesday,<LineBreak />May 4, 2010</Paragraph></TableCell><TableCell BorderThickness="1,1,1,1" BorderBrush="Black"><Paragraph><Hyperlink Foreground="#555555" NavigateUri="http://adverts.timesofmalta.com/openx/www/delivery/ck.php?zoneid=7" /></Paragraph></TableCell></TableRow></TableRowGroup></Table></TableCell></TableRow></TableRowGroup></Table></TableCell></TableRow><TableRow><TableCell BorderThickness="1,1,1,1" …
Run Code Online (Sandbox Code Playgroud)

c# wpf xaml richtextbox flowdocument

5
推荐指数
1
解决办法
1万
查看次数

将 docx 文件转换为 WPF 流文档

我正在尝试将一堆Microsoft Word文档(包含几张图片和多行文本和标题)转换为Flow Documents

我发现这篇文章很有用,但我无法将docx文件中的图像正确添加到Flow Documents

示例代码或一些指导将不胜感激。

c# wpf docx flowdocument

5
推荐指数
1
解决办法
8101
查看次数

FlowDocument表中的单行边框

我有一个FlowDocument表,我想稍微调整一下布局.我想的是一条细线,将发票上的子金额与标题Word2007表格样式中标题行标题行之间的行分隔开来.我希望我可以添加一个空的TableRow并将高度设置为几个像素单位,但我发现没有任何属性可以强制行的高度达到我的愿望.

有没有办法(或黑客)在System.Windows.Documents.Table中的整行下面或上面创建一条细边框线?

wpf flowdocument

5
推荐指数
2
解决办法
8696
查看次数

生成FlowDocument第一页的预览缩略图图像的推荐方法是什么?

我想生成一个FlowDocument第一页的小预览图像(想象一下FlowDocuments集合的缩略图视图).任何人都可以推荐一个好方法来做到这一点?

.net wpf flowdocument

5
推荐指数
1
解决办法
247
查看次数

当放置在具有自定义玻璃的窗口中时,FlowDocument在子元素中丢失ClearType

因此,新的WPF 4文本渲染效果很好,但是在窗口上启用空气玻璃效果需要将背景更改为透明,这当然会禁用ClearType渲染.

使用提供的RenderOptions.ClearTypeHint = Enabled,您可以指定子元素以从树中的该点重新启用ClearType渲染.我发现了一些其他主题,讨论为RichTextBox和FlowDocumentScrollViewer内部使用的ScrollViewer执行此操作,并且创建自定义样式确实修复它,以便我的FlowDocument再次获取ClearType呈现.

但是,这仅适用于FlowDocument中的顶级段落.如果我添加浮动或数字或表格,其中的任何文字都会再次出现莫名其妙的灰度.我知道玻璃效应是罪魁祸首,因为禁用它会重新启用ClearType渲染.

我用Snoop查看了可视化树,但主要内容(正确渲染)和子内容(灰度)都有类似的元素层次结构,没有任何可以附加RenderOptions.ClearTypeHint的内容.

有没有人遇到这个问题?有解决方法或解决方案吗?我检查了Connect,但没有任何关于此的错误.这是一个非常烦人的问题.

wpf cleartype flowdocument

5
推荐指数
0
解决办法
1274
查看次数

WPF RichTextBox GetCharacterRect

我正在尝试获取在富文本框中键入的所有字符的字符 rect。从 MyRichTextBox.Document.ContentStart 文本指针开始,我使用以下代码推进每个字符

currentPointer = currentPointer.GetNextInsertionPosition(LogicalDirection.Forward)
Run Code Online (Sandbox Code Playgroud)

并使用以下代码检索“字符”矩形

currentPointer.GetCharacterRect(LogicalDirection.Forward)
Run Code Online (Sandbox Code Playgroud)

但看起来,对于从上面的代码段返回的任何文本指针,矩形的宽度始终为 0。现在我可以根据前一个字符 rect 和当前字符 rect 之间的区域计算字符 rect,但这会导致出现自动换行时的问题。

有什么方法可以从富文本框的 GetCharacterRect() 函数中获得非零宽度?

编辑

来自微软这里的内容显示了相同的内容。有人知道测量字符 rect 的替代方法吗?

c# wpf richtextbox flowdocument

5
推荐指数
1
解决办法
1214
查看次数

如何在WPF UI中使<UIElement>可交互或可点击

这是我使用WPF设计UI的第一天.我查找了Flow Document的 MSDN官方文档,发现我可以在RichTextBox中放置一个UI控件.我确实放了一个按钮,但发现它不能互动 - 我不能点击它,因为它是灰色的.我也尝试了其他控件,它们都显示正常但只是不支持交互.即使是超链接也不起作用.

我通过互联网搜索,有史以来最接近的问题是关于如何使内部超链接可点击:类似的问题:C#WPF文本链接

我做了同样的事情,但没有奏效!所有组件都显示良好,但无法单击.

这是我的XAML代码:

        <RichTextBox Grid.Row="1" Margin="14.007,31.067,22.011,46.305" Name="rtxtRslt" BorderBrush="White" >
        <FlowDocument>
            <Section FontSize="15">
                <Paragraph>
                    <Bold>Click on this:</Bold>
                    <Italic><Hyperlink  NavigateUri="http://stackoverflow.com">http://www.jxitc.info</Hyperlink></Italic>

                </Paragraph>

                <BlockUIContainer>
                    <Button Click="Button_Click">Also Click On This</Button>
                </BlockUIContainer>
            </Section>
        </FlowDocument>
    </RichTextBox>
Run Code Online (Sandbox Code Playgroud)

任何人都可以给我一些建议:1.是否有可能使其可点击2.如果是,如果我忘记设置RichTextBox控件的任何/什么属性?

c# richtextbox wpf-controls flowdocument uielement

5
推荐指数
1
解决办法
2361
查看次数

如何清除流文档的所有内容

我创建了一个flowdocument并以编程方式添加了许多段落.现在,我希望能够将流文档重置为空白平板,从而导致所有内容被删除.

我找过像Clear,Reset,RemoveAll,Erase这样的东西.是否有清空文件的方法?

wpf richtextbox flowdocument

5
推荐指数
2
解决办法
2779
查看次数

如何防止以C#代码包装在WPF FlowDocument中?

研究表明这是防止换行的一种方式,例如:

<Paragraph>
    <TextBlock TextWrapping="NoWrap">unwrapping text</TextBlock>
</Paragraph>
Run Code Online (Sandbox Code Playgroud)

如何获得C#代码中的行为?

new Paragraph(new TextBlock()
{
    Text = "unwrapping text",
    TextWrapping = TextWrapping.NoWrap
});
Run Code Online (Sandbox Code Playgroud)

cannot convert from 'System.Windows.Controls.TextBlock' to 'System.Windows.Documents.Inline'之所以会产生收益,是因为Paragraph的构造函数期望使用Inline。

我似乎找不到一种将TextBlock转换为Inline以使Paragraph满意的方法。如果它在XAML中有效,那么应该在某处有一个转换器,对吗?我如何找到它?

我意识到FlowDocument的目的是要包装,流动和调整大小等。我正在写一些简单的报告,只是一些System.Windows.Documents.Table数据,不幸的是,包装的第一列是包含日期的,所以

2013-04-24
Run Code Online (Sandbox Code Playgroud)

成为

2013-04-
24
Run Code Online (Sandbox Code Playgroud)

Run到目前为止,我一直在使用s,尽管它们具有一些TextBlock属性,但它们不提供TextWrapping或提供任何东西TextTrimming

c# wpf word-wrap flowdocument

5
推荐指数
1
解决办法
3098
查看次数