在 WPF 设置中 DragOver 中的 e.Effects 不起作用 - 为啥?
Posted
技术标签:
【中文标题】在 WPF 设置中 DragOver 中的 e.Effects 不起作用 - 为啥?【英文标题】:In WPF setting e.Effects in DragOver doesn't work - why?在 WPF 设置中 DragOver 中的 e.Effects 不起作用 - 为什么? 【发布时间】:2011-09-20 04:32:59 【问题描述】:我是 WPF 的新手。我在 TreeView 中实现 Drag&Drop 并且我的 DragOver 事件处理程序不起作用。
<Style TargetType="TreeViewItem">
<!-- ... -->
<EventSetter Event="DragOver" Handler="item_DragOver" />
</Style>
void item_DragOver(object sender, DragEventArgs e)
if (!e.Data.GetDataPresent("someFormat") || e.Source == sender)
e.Effects = DragDropEffects.None;
else if (e.KeyStates == DragDropKeyStates.ControlKey)
e.Effects = DragDropEffects.Copy;
else
e.Effects = DragDropEffects.Move;
e.Handled = true;
当程序在拖动某些树项目时运行时,它始终显示“移动”拖动图标,即使我按下 Ctrl 键也是如此。我想一些默认事件处理程序会覆盖我的 e.Effects,但我不知道在哪里可以搜索它。
有什么想法吗?
【问题讨论】:
【参考方案1】:我找到了,检查ctrl键是否按下正确的方法是:
if ((e.KeyStates & DragDropKeyStates.ControlKey) == DragDropKeyStates.ControlKey)
【讨论】:
以上是关于在 WPF 设置中 DragOver 中的 e.Effects 不起作用 - 为啥?的主要内容,如果未能解决你的问题,请参考以下文章