Указание выбора в Flowdocument - PullRequest
0 голосов
/ 16 ноября 2010

Это сложно, у меня есть несколько ячеек таблицы в потоковом документе, мне нужно иметь возможность обозначать различные элементы цветной цветной левой границей.

В настоящее время я решил эту проблему, поместив прозрачную рамку размером 4 пикселя на ячейку таблицы с именем, а затем с помощью FindName, чтобы найти этот элемент, и переключив кисть границы на цветную рамку.

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

Единственная проблема заключается в том, что для больших документов медленно, я думаю, что изменение границы кисти на TableCell заставляет весь макет пересчитывать сам

У кого-нибудь есть какие-либо идеи по этому поводу, я думаю, мне либо нужно предотвратить пересчет макета, другой вариант - попытаться найти прямоугольник / координаты ячейки и наложить маркер, но я смог найти способ сделать это.

Я знаю, что flowdocument - не самый подходящий элемент управления для такого рода вещей, но по причинам, связанным с макетом, я должен его использовать. Любая помощь / идеи приветствуются

1 Ответ

0 голосов
/ 16 ноября 2010

Я бы порекомендовал использовать украшения .Однако, поскольку TableCell не наследуется от UIContainer, вы не можете его украсить.Вместо этого вы можете установить содержимое каждого из BlockCollection TableCell как RichTextBox (используйте TextBox для повышения производительности).Назовите элемент управления RichTextBox и используйте вместо него FindName.Затем создайте и добавьте Adorner для каждого из RichTextBox ячейки, для которого вы хотите создать выделение.

Если вы не можете использовать вложенный RichTextBox, вы можете украсить RichTextBox, который владеет основным FlowDocument.Но это добавляет сложности, поскольку теперь вам нужно получить координаты вашего TableCell и выполнить преобразование относительно RichTextBox.

...