2010-11-16 15 views
0

Celui-ci est délicat, j'ai un certain nombre de cellules de tableau dans un flowdocument, je dois être en mesure d'indiquer différents éléments par une bordure gauche colorée. J'ai résolu ce problème en mettant une bordure transparente de 4 pixels sur un tablecell avec un nom, puis en utilisant FindName pour trouver cet élément et en basculant la bordure vers une bordure colorée.Indication de sélection dans Flowdocument

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

Le seul problème est qu'il est lent pour les documents volumineux, je pense changer le BorderBrush sur le TableCell est à l'origine de la mise en page entière à se recalcule

quelqu'un a des idées autour, je suppose que je soit ai pour empêcher la mise en page de recalculer, une autre option serait d'essayer de trouver le rectangle/coordonnées de la cellule et de superposer un marqueur, mais j'ai été en mesure de trouver un moyen de le faire.

Je sais que flowdocument n'est pas le contrôle le plus approprié pour ce genre de choses, mais pour des raisons de mise en page, c'est celui que je dois utiliser. Toute aide/idées appréciées

Répondre

0

Je recommanderais d'utiliser adorners. Cependant, puisque TableCell n'hérite pas de UIContainer, vous ne pouvez pas l'orner. Au lieu de cela, vous pouvez définir le contenu de chaque BlockCollection de TableCell comme RichTextBox (utilisez TextBox pour de meilleures performances). Nommez le contrôle RichTextBox et utilisez FindName à la place. Ensuite, créez et ajoutez un Adorner pour chaque RichTextBox de la cellule pour laquelle vous souhaitez créer une sélection.

Si vous ne pouvez pas utiliser la zone RichTextBox imbriquée, vous pouvez orner la zone RichTextBox à laquelle appartient le FlowDocument principal. Mais cela ajoute à la complexité car vous devez maintenant obtenir les coordonnées de votre TableCell et faire une transformation par rapport à la RichTextBox.

+0

L'enrubannage de tout le contenu de la cellule peut sembler interférer avec la mise en page (puisqu'elle est enveloppée dans des colonnes), mais disposer également d'une riche zone de texte (nécessaire pour le contenu) est tout à fait nécessaire. – Homde