我需要将WPF FlowDocuments保存到SQL Server.这样做的最佳格式是什么?串?BLOB?在少于5K字左右的文件中是否重要?
我想得到一个用户在FlowDocument中点击的单词.
我目前正在为文档中的每个Run添加一个事件处理程序,并在单击的Run中迭代TextPointers,在每个Run上调用GetCharacterRect()并检查矩形是否包含该点.
但是,当在长时间运行结束时发生咔嗒声时,这需要> 10秒.
有没有更有效的方法?
由于我是WPF FlowDocuments的新手,我想问下面的代码是否正确.它应该返回FlowDocument中包含的所有图像作为List:
List<Image> FindAllImagesInParagraph(Paragraph paragraph)
{
List<Image> result = null;
foreach (var inline in paragraph.Inlines)
{
var inlineUIContainer = inline as InlineUIContainer;
if (inlineUIContainer != null)
{
var image = inlineUIContainer.Child as Image;
if (image != null)
{
if (result == null)
result = new List<Image>();
result.Add(image);
}
}
}
return result;
}
private List<Image> FindAllImagesInDocument(FlowDocument Document)
{
List<Image> result = new List<Image>();
foreach (var block in Document.Blocks)
{
if (block is Table)
{
var table = block as Table; …Run Code Online (Sandbox Code Playgroud) 我在当前的WPF项目中创建了一个FlowDocument.xaml.我想要做的是当用户单击一个按钮时,XAML文档将被加载到后面的代码中,修改文档上的一些数据,然后将其打印出来.关键点是我不知道如何加载流文档,以便我可以修改它.
当我做:
FileStream fs = File.Open("FlowDocument.xaml", FileMode.Open)
Run Code Online (Sandbox Code Playgroud)
它说它找不到文件.该文件是项目的一部分,我猜它在编译时会与项目的其余部分打包在一起.
任何帮助表示赞赏
我有一个WPF应用程序,它通过套接字连接到设备并获取流文本数据(每秒大约1条消息).然后,此数据将显示在UI上.用户可以创建规则,如"如果数据包含'abc'突出显示行"或"...使其变为粗体",那么纯文本输出将不会执行,它需要是"丰富"文本.
我目前的解决方案是在我的ViewModel中包含一个包含格式化输出的FlowDocument.View有一个FlowDocumentScrollViewer,它绑定到ViewModel中的FlowDocument.
这很有效,但是当FlowDocument变大(~6,000行)时,性能开始下降.当前算法将行数限制为10,000,但事情变得更糟,直到应用程序无法使用.一旦达到10,000行,然后我为每一行添加一行,导致FlowDocumentScrollViewer获得每个新行的2个更新通知.
我试图找到批量删除的方法(当我们达到10,000行删除最旧的1,000行时),但FlowDocument上没有批量删除.循环1,000次并执行删除会导致1,000个更新通知并锁定UI.
这是我的问题,这是我的问题:
使用WPF显示流式富文本内容的最佳方法是什么? 我每秒收到~1条消息,每条消息大约150个字符,我想保留最后10000条消息.我是以错误的方式来做这件事的吗?是否有其他控制/对象表现更好?
编辑:这里有一些更多的要求
我的目标是在wpf应用程序中显示html内容.我使用brwoser控制但这总是在窗口之上.我在网上搜索并找到了将html转换为流文档的解决方案.但我的问题是如何在wpf应用程序中使用对流的flowdocument来显示html内容
请参阅以下文章.
我正在使用.NET 3.5
我在FlowDocumentScrollViewer中有一个FlowDocument.我没有使用RichTextBox.FlowDocument附带了许多"免费赠品",包括文本选择和用于复制/粘贴的上下文菜单.
如何找出FlowDocument中当前选择的文本?我想,我可以使用ApplicationCommands.Copy来获取文本到剪贴板中,然后从那里读出来,但是我并不想改变剪贴板的内容,如果我没有.
一定有我遗失的东西......
我有这个XAML结构:
<wft:Dialog x:Class="WFT.PumpSvc.Bench.Parts.PartsPullListDialog"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:wft="http://schemas.Weatherford.com">
<wft:Dialog.Resources>
<ResourceDictionary Source="../Resources.xaml" />
</wft:Dialog.Resources>
<wft:CaptionedBox Style="{StaticResource HeaderCaptionedBox}" Name="captionedBox" Caption="Parts Pull List">
<DockPanel>
<DockPanel DockPanel.Dock="Right">
<StackPanel Orientation="Vertical" DockPanel.Dock="Top">
<wft:TouchButton Name="closeButton">Cancel</wft:TouchButton>
</StackPanel>
<StackPanel Orientation="Vertical" VerticalAlignment="Bottom">
<wft:TouchButton Name="printButton">Print</wft:TouchButton>
</StackPanel>
</DockPanel>
<wft:CaptionedBox Caption="Preview">
<FlowDocumentPageViewer Name="documentReader">
<FlowDocument Background="White">
<Paragraph FontSize="20" FontWeight="Bold">Parts Pull List</Paragraph>
<Table FontWeight="Bold">
<Table.Columns>
<TableColumn Width="*" />
<TableColumn Width="2*" />
</Table.Columns>
<TableRowGroup>
<TableRow>
<TableCell>...
<TableCell>...
</TableRow>
<TableRow>...
<TableRow>...
</TableRowGroup>
</Table>
<Table>
<Table.Columns>
<TableColumn Width="1*" />
<TableColumn Width="1*" />
<TableColumn Width="1*" />
<TableColumn Width="1*" />
<TableColumn Width="1*" …Run Code Online (Sandbox Code Playgroud) 当我打印流文档时,我想要某些元素 - 段落,表格 - 可能标有一些附加属性:
有没有人已经完成它或有想法如何做到这一点?
干杯
我理解并阅读过使用WPF的FlowDocument在屏幕上创建XML样式文档,但是用户可以编辑的内容是可读的,还是只读的?如果是这样,这是怎么做到的?
我的问题主要集中在listitem控件的使用上,因为能够编辑在我的程序中使用的列表项的顺序会很好,而不是我必须创建自己的自定义控件.
问候.
flowdocument ×10
wpf ×8
c# ×3
.net ×2
xaml ×2
copy ×1
pagination ×1
sql-server ×1
wpf-controls ×1