WPF - 如何在文本框控件中禁用拖放?

时间:2016-06-07 21:01:03

标签: c# wpf textbox drag-and-drop highlight

如果查看文本框在Windows资源管理器中的显示方式 - 如果重命名文件,则会突出显示整个文本。但是,如果您拖动以选择文本,它将更改选择以适合用户的拖动。

在WPF中,如果您选择文本框的所有文本,然后在文本区域中拖动以选择文本,它将尝试并拖动&删除文本框区域中的文本。我想知道在WPF中是否有办法禁用此功能,让它更像Windows资源管理器?

它主要是因为当人们重命名时他们要么重命名整个事物(激活重命名后退格,因为所有文本都突出显示)或部分文本(用户拖动以突出显示某些文本。) Windows资源管理器结合了两者并且运行良好,我需要在WPF中复制该功能。

1 个答案:

答案 0 :(得分:4)

您可以使用DataObject.AddCopyingHandler

DataObject.AddCopyingHandler(textbox, (s, e) =>
{
    if (e.IsDragDrop) e.CancelCommand();
});

编辑:

  

当拖动选择文本时,它不会将光标位置设置为选择的开头,它只使用文本框中文本的开头

您可以在实际选择之前删除当前选择:

textbox.PreviewMouseLeftButtonDown += (s, e) =>
{
    textbox.Select(0, 0);
};