使FlowDocument的一部分不可选

时间:2009-08-09 22:38:39

标签: wpf copy-paste highlight flowdocument

我想制作一个包含用户指定内容和操作该内容的超链接的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的一部分。但这只是一个布局的神器 - 如果我可以获得相同的布局,我会很高兴将它们放在外面。我不希望超链接是可突出显示的,我希望对话框的OK和Cancel按钮可以突出显示。有没有办法让这种情况发生?

2 个答案:

答案 0 :(得分:0)

我刚刚使用Blend进行了检查,你无法真正应用像IsSelectionEnabled = false这样的属性来阻止

但是你可以把哪些不被复制(可能在单词中?)并且可以得到剥皮

另一个选项是显示Flow文档中的内容,并在其他地方进行编辑和控制。如果您不想使用FlowDocumentScrollViewer,您可以使用网格并定位按钮,就像它是FlowDocumentScrollViewer的一部分

答案 1 :(得分:0)

如果是我,我会将这些链接放在flowdocument之外,可能放在侧边栏或其他东西。