c# – 拖放时滚动(WPF)

前端之家收集整理的这篇文章主要介绍了c# – 拖放时滚动(WPF)前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
好的,我已经在这个问题上scratch ing了我的头,就花了好几个小时来研究它是如何工作的,但是我还没有找到答案,如果你想看到我的任何一个SRC随意问我会看看我能帮助吗

基本上我遇到的问题是我的应用程序中有一个TreeView文件夹,即:

Catalog

  Brands
    Nike
    Adidas
    Lactose

  Styles
    Sandles
    Trainers
    Boots

我想要解决的问题是当我拖动一个文件夹(这在我的DragDropManager类中处理)时,我无法向上或向下滚动(只显示一个可爱的停止标志).我也不能在树视图中找到一个滚动条,所以我不确定它是如何生成的(这不是我自己的软件,我最近开始为一家公司工作,所以我不熟悉代码,没有人似乎知道.)

如果我想把东西从顶部移到底部,这是一个问题.

滚动工作自身没有拖动完成.

如果任何人希望看到我的代码的任何部分都可以自由地询问,因为我不确定实际显示你们.

我已阅读了很多文章,我只是在刮伤我的头脑.

解决方法

我已经创建了一个附加的属性来实现这个行为,看看我的帖子在这里 –

Attached Behavior for auto scrolling containers while doing Drag & Drop

主要逻辑就是这样 –

private static void OnContainerPreviewDragOver(object sender,DragEventArgs e)
{
    FrameworkElement container = sender as FrameworkElement;

    if (container == null)
    {
        return;
    }

    ScrollViewer scrollViewer = GetFirstVisualChild<ScrollViewer>(container);

    if (scrollViewer == null)
    {
        return;
    }

    double tolerance = 60;
    double verticalPos = e.GetPosition(container).Y;
    double offset = 20;

    if (verticalPos < tolerance) // Top of visible list? 
    {
        //Scroll up
        scrollViewer.ScrollToVerticalOffset(scrollViewer.VerticalOffset - offset);
    }
    else if (verticalPos > container.ActualHeight - tolerance) //Bottom of visible list? 
    {
        //Scroll down
        scrollViewer.ScrollToVerticalOffset(scrollViewer.VerticalOffset + offset);     
    }
}

关于SO的类似问题(尽管它们主要用于ListBox / ListView,但也适用于TreeView)

WPF Listbox auto scroll while dragging

WPF ListView Databound Drag/Drop Auto Scroll

WPF Drag-to-scroll doesn’t work correctly

猜你在找的C#相关文章