拖放时滚动(WPF)

好吧,伙计们,我一直在为这个问题疯狂地摸不着头脑,花了几个小时试图研究它是如何工作的但是我还没有找到答案,如果你希望看到我的任何一个SRC随意询问我和我会看看能不能帮忙。

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

 Catalog Brands Nike Adidas Lactose Styles Sandles Trainers Boots 

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

如果我想从顶部移动到最底部,这是一个问题。

滚动工作正常,无需拖动。

如果有人希望看到我的代码的任何部分随意问,因为我不确定实际向你们展示什么。

我已经阅读了一些很好的文章,我只是在摸不着头脑。

我创建了一个附加属性来实现这种行为,看看我的post –

执行拖放时自动滚动容器的附加行为

主要逻辑是这样的 –

 private static void OnContainerPreviewDragOver(object sender, DragEventArgs e) { FrameworkElement container = sender as FrameworkElement; if (container == null) { return; } ScrollViewer scrollViewer = GetFirstVisualChild(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列表框自动滚动

WPF ListView数据绑定拖放自动滚动

WPF拖动滚动无法正常工作