Я решил проблему - довольно брутально и небезопасно. Но это сработает как временное решение.
Хорошо, когда я поднимаю событие PageDragStart, я вызываю Mouse.Capture (this, CaptureMode.SubTree);
Когда страница куда-то сбрасывается - DoDragDrop генерирует разные исключения (COMException, NullReference (я не смог найти, какой объект является нулевым) и некоторые другие, которые я не помню)
Я ловлю исключение и вызываю событие PageDragEnd (если для свойства IsPageDraggingOut установлено значение true).
Насколько вы можете видеть, это решение действительно грязное и плохое. Но это работает.
Итак, есть ли другие идеи (или идеи, как правильно работать с Mouse.Capture)?