指示Flowdocument中的选择

时间:2010-11-16 06:06:44

标签: .net wpf flowdocument

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

我目前通过在带有名称的表格单元格上放置一个4像素透明边框,然后使用FindName查找该元素并将边框刷切换为彩色边框来解决此问题。

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

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

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

我知道flowdocument不是最适合这种东西的控件,但出于布局原因,它是我必须使用的。任何帮助/想法赞赏

1 个答案:

答案 0 :(得分:0)

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

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