WPF TextBox:取消放置操作留下插入标记

WPF TextBox: Cancelling drop operation leaves Insertion marker

我有一个 WPF 应用程序,如果满足某些条件(请参阅下面的 shouldCancelDrop),我想取消对 TextBox 的放置操作:

样本:

XAML:

   <TextBox PreviewDrop="TextBox_PreviewDrop" />

后面的代码:

    private void TextBox_PreviewDrop(object sender, DragEventArgs e)
    {
        //Decision if to cancel to drop
        var shouldCancelDrop = false;
        //if (...) shouldCancelDrop = true;
        
        if (shouldCancelDrop)
        {
            e.Handled = true;
            return;
        }

        //...
    }

问题是:在离开 TextBox_PreviewDrop-Handler 后 e.Handled = true "插入标记" 始终留在文本框中。它看起来像一个文本光标但是是浅灰色的并且不闪烁,看这里(右边黑色的是文本光标):

.

取消掉落时如何去掉这个插入标记?

在我完成另一个拖动操作之前,它一直停留在 TextBox 中!

所以我正在寻找一些“CancelDropOperationAndRedrawTextBox”-Action...

您可以使用“PreviewDragOver”事件来禁止通过 DragDropEffects.None 删除元素:

private void TextBox_OnPreviewDragOver(object sender, DragEventArgs e)
{
  //Decision if to cancel to drop
  var shouldCancelDrop = false;
  //if (...) shouldCancelDrop = true;

  if (shouldCancelDrop)
  {
    e.Effects = DragDropEffects.None;
    return;
  }

  //...    
}