繁体   English   中英

拖放操作后未触发KeyDown事件

[英]KeyDown Event Not Firing After Drag Drop Operation

我在TreeViewItem的模板中有一个自定义可编辑文本框。 按F2键可以编辑这些项目。 如果不在编辑模式下,则单击该项目时,将触发拖放操作。 这是可编辑树视图项目的模板:

        <HierarchicalDataTemplate x:Key="editableHierarchyNodeTemplate"
                              ItemsSource="{Binding ContainedParameter}"
                              ItemTemplateSelector="{StaticResource treeItemTemplateSelector}">

        <ut:EditBox Text="{Binding DisplayName, Mode=TwoWay}" PreviewMouseLeftButtonDown="EditBox_PreviewMouseDown" PreviewKeyDown="EditBox_KeyDown"/>
    </HierarchicalDataTemplate>

EditBox是自定义控件,可以简单地从“只读”切换到可编辑的TextBox。 在“ EditBox_KeyDown”方法中,我只需将EditBox的IsInEditMode属性设置为true,就可以实现它的魔力。 但是,按如下方式处理“ PreviewMouseLeftButtonDown”后,不会触发此事件:

  private void EditBox_PreviewMouseDown(object sender, MouseButtonEventArgs e)
    {
        DataObject data = (new DataObject());
        data.SetData("Parameter", (sender as FrameworkElement).DataContext as Parameter);
        DragDrop.DoDragDrop(this, data, DragDropEffects.All);
    }

我认为,一旦开始拖放操作,它就会吸收所有关键事件。 如何取消呢?

问题实际上是失去了重点。 解决该问题的重要部分是,当不编辑项目时,我的EditBox显示不可编辑的TextBox。 TextBox是可聚焦的控件。 我将其更改为TextBlock,后者无法聚焦。 对于拖放操作,我最终使用以下方法:

http://www.wpftutorial.net/DragAndDrop.html

这两个更改的组合解决了问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM