.net 在Flowdocument中指示选择

.net 在Flowdocument中指示选择,.net,wpf,flowdocument,.net,Wpf,Flowdocument,这是一个棘手的问题,我在一个flowdocument中有许多表格单元格,我需要能够通过一个彩色的左边框指示不同的项目 目前,我已经解决了这个问题,在一个有名称的tablecell上放置了一个4像素的透明边框,然后使用FindName查找该元素,并将borderbrush切换为彩色边框 <TableCell BorderBrush="Transparent" BorderThickness="4 0 0 0" Padding="0 0 4 0" Name="cell_1"/>

这是一个棘手的问题,我在一个flowdocument中有许多表格单元格,我需要能够通过一个彩色的左边框指示不同的项目

目前,我已经解决了这个问题,在一个有名称的tablecell上放置了一个4像素的透明边框,然后使用FindName查找该元素,并将borderbrush切换为彩色边框

  <TableCell BorderBrush="Transparent" BorderThickness="4 0 0 0" Padding="0 0 4 0" Name="cell_1"/>

唯一的问题是对于大型文档来说速度很慢,我认为更改TableCell上的borderbrush会导致整个布局重新计算自身

任何人对此有任何想法,我想我要么必须阻止布局重新计算,另一个选择是尝试找到单元格的矩形/坐标并覆盖一个标记,但我已经找到了一种方法来做到这一点

我知道flowdocument不是这类东西最合适的控件,但出于布局的原因,我不得不使用它。感谢您的任何帮助/想法

我建议您使用。但是,由于它不是从UIContainer继承的,所以不能修饰它。相反,您可以将TableCell的每个BlockCollection的内容设置为RichTextBox(使用TextBox可获得更好的性能)。命名RichTextBox控件,并在此控件上使用FindName。然后为要为其创建选择的每个单元格RichTextBox创建并添加装饰器


如果不能使用嵌套的RichTextBox,则可以修饰拥有主FlowDocument的RichTextBox。但这增加了复杂性,因为您现在必须获得TableCell的坐标,并进行相对于RichTextBox的转换。

包装单元格的整个内容听起来可能会干扰布局(因为它包装在列中),同时还需要一个RichTextBox(内容需要)这本身就是开销