好的,我已经在这个问题上scratch ing了我的头,就花了好几个小时来研究它是如何工作的,但是我还没有找到答案,如果你想看到我的任何一个SRC随意问我会看看我能帮助吗
@H_502_2@基本上我遇到的问题是我的应用程序中有一个TreeView文件夹,即:
Catalog Brands Nike Adidas Lactose Styles Sandles Trainers Boots@H_502_2@我想要解决的问题是当我拖动一个文件夹(这在我的DragDropManager类中处理)时,我无法向上或向下滚动(只显示一个可爱的停止标志).我也不能在树视图中找到一个滚动条,所以我不确定它是如何生成的(这不是我自己的软件,我最近开始为一家公司工作,所以我不熟悉代码,没有人似乎知道.) @H_502_2@如果我想把东西从顶部移到底部,这是一个问题. @H_502_2@滚动工作自身没有拖动完成. @H_502_2@如果任何人希望看到我的代码的任何部分都可以自由地询问,因为我不确定实际显示你们. @H_502_2@我已阅读了很多文章,我只是在刮伤我的头脑.
解决方法
我已经创建了一个附加的属性来实现这个行为,看看我的帖子在这里 –
@H_502_2@Attached Behavior for auto scrolling containers while doing Drag & Drop
@H_502_2@主要逻辑就是这样 –
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); } }@H_502_2@关于SO的类似问题(尽管它们主要用于ListBox / ListView,但也适用于TreeView) @H_502_2@WPF Listbox auto scroll while dragging @H_502_2@WPF ListView Databound Drag/Drop Auto Scroll @H_502_2@WPF Drag-to-scroll doesn’t work correctly