2010-11-16 64 views
0

這是一個棘手的,我有很多的FlowDocument的表格單元格的,我需要能夠以指示彩色左邊界不同的項目。表示選定在FlowDocument的

我通過把一個4像素透明邊框上的TableCell使用一個名稱,然後使用FindName來查找元素和borderbrush切換到彩色邊框當前解決了這個。

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

唯一的問題是,對於大型文件慢,我想改變的的TableCell的borderbrush導致整個佈局重新計算本身

任何人有解決這個任何想法,我想我要麼爲了防止佈局重新計算,另一個選擇是嘗試查找單元格的矩形/座標並覆蓋標記,但是我已經能夠找到一種方法來實現這一點。

我知道FlowDocument的是不是這種東西最適合的控制,但對於佈局原因,它是一個我必須使用。任何幫助/想法表示讚賞

回答

0

我會建議使用adorners。但是,由於TableCell不能從UIContainer繼承,所以不能裝飾它。相反,您可以將每個TableCell的BlockCollection的內容設置爲RichTextBox(使用TextBox以獲得更好的性能)。改名爲RichTextBox控件並在其上使用FindName。然後爲每個要爲其創建選區的單元格的RichTextBox創建並添加一個Adorner。

如果你不能使用嵌套的RichTextBox,你可以點綴擁有主要的FlowDocument的RichTextBox的。但是這增加了複雜性,因爲您現在必須獲取TableCell的座標並進行相對於RichTextBox的轉換。

+0

包裝紙的全部內容在Cell聽起來像它可能與佈局干擾(因爲它在列包裹),還具有一個RichTextBox(這是需要的內容)本身相當的開銷 – Homde 2010-11-16 09:15:39