For a tool of mine I have the following problem: I have an appointment which I want to drag in any red/green slot. For this I have a custom ScheduleViewDragDropBehavior class, which has the method CanDrop which will check if the DestinationSlots overlaps any of my red/green slots which I access via my ViewModel. I also have a custom DragDropHighlightStyle template, which will show nothing when dragging.
Thus, when the user drags the appointment, he only sees his cursor. The purpose would be that the user can drag anywhere in a red/green slot, drop it, and the appointment takes over the start and end time of that slot. But the problem: it depends where the user clicks the appointment and starts dragging. Let's say that an appointment lasts four hours, starts at 01:00, and ends at 05:00:
- If the user clicks the appointment at 01:05, starts dragging and drops it in the slot below at 01:00, the DestinationSlots will be from 12:55 till 04:55
- If the user clicks the appointment at 03:05, starts dragging and drops it in the slot below at 01:00, the DestinationSlots will be from 10:55 till 02:55
- If the user clicks the appointment at 04:55, starts dragging and drops it in the slot below at 01:00, the DestinationSlots will be from 09:02 till 01:05
When I actually want my DestinationSlots to start exactly where I drop it on the timeline, and end four hours later.
My possible solutions would be:
- Detect in which custom slot an appointment is dropped. But not possible if I understood correctly?
- Detect on which hour the cursor currently is (hover). I could match this with the value from DestinationSlots. But also not possible?
- Modify each appointment I drag to being one minute long. Thus, it would not matter where the users clicks the appointment to start the drag. But also this I could not get to work. But I think this is the most viable solution.
Any help would be appreciated.