我想检测(最好通过一个事件)什么时候添加,更改等任何内容FlowDocument
,当它出现时我想让FlowDocumentScrollViewer
显示FlowDocument
自动滚动到结尾.
我有一些 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) 我正在尝试将一堆Microsoft Word文档(包含几张图片和多行文本和标题)转换为Flow Documents。
我发现这篇文章很有用,但我无法将docx文件中的图像正确添加到Flow Documents。
示例代码或一些指导将不胜感激。
我有一个FlowDocument表,我想稍微调整一下布局.我想的是一条细线,将发票上的子金额与标题Word2007表格样式中标题行标题行之间的行分隔开来.我希望我可以添加一个空的TableRow并将高度设置为几个像素单位,但我发现没有任何属性可以强制行的高度达到我的愿望.
有没有办法(或黑客)在System.Windows.Documents.Table中的整行下面或上面创建一条细边框线?
我想生成一个FlowDocument第一页的小预览图像(想象一下FlowDocuments集合的缩略图视图).任何人都可以推荐一个好方法来做到这一点?
因此,新的WPF 4文本渲染效果很好,但是在窗口上启用空气玻璃效果需要将背景更改为透明,这当然会禁用ClearType渲染.
使用提供的RenderOptions.ClearTypeHint = Enabled,您可以指定子元素以从树中的该点重新启用ClearType渲染.我发现了一些其他主题,讨论为RichTextBox和FlowDocumentScrollViewer内部使用的ScrollViewer执行此操作,并且创建自定义样式确实修复它,以便我的FlowDocument再次获取ClearType呈现.
但是,这仅适用于FlowDocument中的顶级段落.如果我添加浮动或数字或表格,其中的任何文字都会再次出现莫名其妙的灰度.我知道玻璃效应是罪魁祸首,因为禁用它会重新启用ClearType渲染.
我用Snoop查看了可视化树,但主要内容(正确渲染)和子内容(灰度)都有类似的元素层次结构,没有任何可以附加RenderOptions.ClearTypeHint的内容.
有没有人遇到这个问题?有解决方法或解决方案吗?我检查了Connect,但没有任何关于此的错误.这是一个非常烦人的问题.
我正在尝试获取在富文本框中键入的所有字符的字符 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 的替代方法吗?
这是我使用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控件的任何/什么属性?
我创建了一个flowdocument并以编程方式添加了许多段落.现在,我希望能够将流文档重置为空白平板,从而导致所有内容被删除.
我找过像Clear,Reset,RemoveAll,Erase这样的东西.是否有清空文件的方法?
研究表明这是防止换行的一种方式,例如:
<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
。
flowdocument ×10
wpf ×9
c# ×5
richtextbox ×4
.net ×1
cleartype ×1
docx ×1
scroll ×1
uielement ×1
word-wrap ×1
wpf-controls ×1
xaml ×1