2

ユーザー指定のコンテンツと、そのコンテンツを操作するためのハイパーリンクの両方を含む 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」のテキストを強調表示し、それをクリップボードにコピーできます。これはいい。ただし、ハイパーリンクを強調表示してコピーすることもできます。次の 2 つの理由から、それは避けたいと思います。

  • ハイパーリンクは実際にはコンテンツの一部ではないので、クリップボードや別のプログラムで何の役に立つでしょうか?
  • また、FlowDocument の一部ではないフォームに他のハイパーリンクがあることも期待しています。一部のハイパーリンクが強調表示可能で、他のハイパーリンクが強調表示されないのは不適切な形式です。

私はこれらのハイパーリンクを段落で折り返すのが好きで、折り返されたテキストの最後の行のすぐ右側に常に表示されます。私の知る限り、それは FlowDocument の一部である必要があることを意味します。しかし、それは単なるレイアウトのアーティファクトです。同じレイアウトを取得できれば、外に置いても同じくらいうれしいです。ダイアログの [OK] ボタンと [キャンセル] ボタンを強調表示できるようにしたいのと同じように、ハイパーリンクを強調表示できるようにしたくありません。それを実現する方法はありますか?

4

2 に答える 2

1

Blend で確認したところ、実際には IsSelectionEnabled=false のようなプロパティを適用してブロックすることはできません

ただし、コピーされないものを配置して(おそらく単語で?)、スキンを取得できます

もう 1 つのオプションは、コンテンツをフロー ドキュメントに表示し、編集と制御を別の場所で行うことです。FlowDocumentScrollViewer で遊びたくない場合は、グリッドで遊んで、ボタンを FlowDocumentScrollViewer の一部のように配置することができます。

于 2009-08-10T02:14:58.230 に答える
0

私だったら、それらのリンクをフロー ドキュメントの外、おそらくサイドバーか何かに配置します。

于 2014-03-13T14:46:00.987 に答える