События UWP TreeView DragEnter и DragOver не выполняются - PullRequest
0 голосов
/ 03 июня 2019

Очень важно, чтобы я мог отслеживать, какой элемент перетаскивается в TreeView UWP и на какой элемент он перетаскивается.Пока я могу получить только перетаскиваемый предмет.Но я не могу определить, над каким предметом он перетаскивается или над каким предметом он сбрасывается.Также было бы полезно узнать в качестве предварительного просмотра, на какой элемент добавлен предмет, чтобы я мог выполнять больше действий (например, отменить добавление некоторых элементов).

Вот мой расширенный элемент управления:

    public class MyTreeView : TreeView
{
    public MyTreeView()
    {
        this.DragItemsStarting += MyTreeView_DragItemsStarting; //execute ok
        this.DragItemsCompleted += MyTreeView_DragItemsCompleted; //execute ok

        this.DragEnter += MyTreeView_DragEnter; //does not execute?
        this.Drop += MyTreeView_Drop; //does not execute?
        this.DragOver += MyTreeView_DragOver; //does not execute?
    }

    //...
}

В xaml:

<localdata:MyTreeView 
            x:Name="treeview" Grid.Row="2" ItemsSource="{Binding storageFolders,Mode=OneWay}" 
            Style="{StaticResource TreeViewStyle1}"
            ItemTemplateSelector="{StaticResource ExplorerItemTemplateSelector}"
            SelectedItem="{Binding fileObject}"
            SelectedIndex="{Binding IndexObj, Mode=TwoWay}"
            >             
        </localdata:MyTreeView>

1 Ответ

0 голосов
/ 05 июня 2019

По замыслу, DragOver будет вызываться, когда другой TreeView элемент зависает TreeView. Если вы хотите реализовать функцию cancel, вы можете оценить, является ли текущий TreeViewNode верным для DragItems в обработчике DragItemsCompleted, как показано ниже.

private void ListControl_DragItemsCompleted(ListViewBase sender, DragItemsCompletedEventArgs args)
{
    foreach (var item in args.Items)
    {

        var node = TreeDataBound.NodeFromContainer(TreeDataBound.ContainerFromItem(item));          
        var parent = node.Parent;

      //do some stuff judge the parent.
    }
} 
...