Я довольно новичок в StackOverFlow, и это мой первый пост, поэтому я постараюсь рассказать вам как можно больше подробностей.
У меня проблема с Gong DragDrop. Решение: у меня есть простой просмотр списка в что я могу, благодаря этой библиотеке, переупорядочивать элементы путем перетаскивания, это прекрасно работает в этом случае!
Теперь моя проблема заключается в следующем: я хочу получить координаты мыши относительно заданного c внешний UIElement (родительский scrollviewer) в событии DragOver предоставил
перетаскивание списка просмотра работает, как и должно, но в моем случае у меня есть два списка просмотра бок о бок внутри блока scrollViewer:
тот, что слева не может быть отредактирован
тот, что справа, - то, что пользователь будет редактировать / переупорядочивать
Я просто хочу, чтобы родительский scrollViewer прокручивал, когда пользователь перетаскивал элемент и приближался его границы.
<ScrollViewer x:Name="parentScrollViewer">
<!-- 2 ListViews side by side, the one on the right is the one -->
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="5" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<ListView
Grid.Row="1"
IsHitTestVisible="False"
BorderThickness="0"
FontWeight="Bold"
ItemsSource="{Binding ContentStructure}"
ScrollViewer.CanContentScroll="False"
>
</ListView>
<GridSplitter Grid.Column="1" Width="5" HorizontalAlignment="Stretch" />
<!--listview where drag and drop is implemented !-->
<ListView
x:Name="dragDropListView"
Grid.Row="1"
Grid.Column="2"
BorderThickness="1px,0,0,0"
AllowDrop="True"
dd:DragDrop.IsDragSource="True"
dd:DragDrop.IsDropTarget="True"
dd:DragDrop.DropHandler="{Binding}"
PreviewMouseWheel="FilesGrid_PreviewMouseWheel"
SelectionChanged="FilesGrid_SelectionChanged"
ItemsSource="{Binding SourceFiles, UpdateSourceTrigger=PropertyChanged}"
ScrollViewer.CanContentScroll="False"
>
</ListView>
</Grid>
</ScrollViewer>
Реализуя интерфейс IDropTarget в моей модели представления, я получаю эти методы, которые получают в качестве параметров идентификатор данные ropInfo Вот где я застрял, пытаясь найти доступ к самому объекту события (DragEventArg), чтобы использовать его и вызвать GetPosition.
Я пробовал Mouse.GetPosition (parentScrollViewer), например, но он не обновляет координаты, когда я перемещаю мышь
public void DragOver(IDropInfo dropInfo)
{
// e.GetPosition(parentScrollViewer) won't work here
// dropInfo has a dropPosition property but it gives coordinates from the mouse relative
// to the listView where the drag is happening not the parentScrollViewer
}
public void Drop(IDropInfo dropInfo)
{
throw new NotImplementedException();
}
Пожалуйста, дайте мне знать, если у вас есть какие-либо советы или идеи
Спасибо!