簡體   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