Создание части FlowDocument без возможности выбора - PullRequest
1 голос
/ 10 августа 2009

Я хочу создать FlowDocument, который содержит как пользовательский контент, так и гиперссылки для манипулирования этим контентом. Я хочу, чтобы пользователь мог выделить содержимое мышью и скопировать его в буфер обмена. Есть ли способ разрешить это, не позволяя пользователю выделять и копировать гиперссылки?

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

Например:

<FlowDocumentScrollViewer>
  <FlowDocument>
    <Paragraph>
      Blah blah blah blah, blah blah blah -- blah blah blah blah blah blah.
      Blah, blah blah Blah blah blah, blah blah blah blah-blah blah.
      (<Hyperlink>Edit</Hyperlink> - <Hyperlink>Delete</Hyperlink>
    </Paragraph>
  </FlowDocument>
</FlowDocumentScrollViewer>

Пользователь может использовать мышь, чтобы выделить текст «Версия 1.0» и скопировать его в буфер обмена. Это хорошо. Однако они также могут выделять гиперссылки и копировать их. Я бы предпочел этого избежать по двум причинам:

  • Гиперссылки на самом деле не являются частью контента, так что же они хорошего в буфере обмена или в другой программе?
  • Я также ожидаю, что в форме будут другие гиперссылки, которые не являются частью FlowDocument, и для некоторых гиперссылок будет плохой вид, чтобы их можно было выделить, а другие - нет.

Мне нравится, когда эти гиперссылки переносятся по словам в абзаце и всегда отображаются справа от последней строки переносимого текста. Насколько я знаю, это означает, что они должны быть частью FlowDocument. Но это всего лишь артефакт макета - я был бы так же рад, если бы они были снаружи, если бы я мог получить тот же макет. Я не хочу, чтобы гиперссылки были выделенными, равно как и кнопки ОК и Отмена, чтобы выделить их. Есть ли способ сделать это?

Ответы [ 2 ]

0 голосов
/ 13 марта 2014

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

0 голосов
/ 10 августа 2009

Я только что проверил с Blend, и вы не можете применить свойство, такое как IsSelectionEnabled = false, к блоку

Однако вы можете поставить те, которые не копируются (может быть, на словах?) И могут быть очищены от кожи

Другой вариант - показать содержимое в поточном документе и редактировать и контролировать его в другом месте. Если вы не хотите играть с FlowDocumentScrollViewer, вы можете поиграть с сеткой и расположить кнопку так, как будто она является частью FlowDocumentScrollViewer

...