У нас есть приложение UWP, которое использует SwapChainPanel для рендеринга 2D-контента, мы хотели бы иметь возможность перетаскивать на него файлы.
Первый подход:
Сначала я просто попытался использовать события на самой панели SwapChainPanel, они никогда не вызывались.
<SwapChainPanel x:Name="swap" AllowDrop="True" DragEnter="Swap_DragEnter" >
</SwapChainPanel>
Второй подход:
Затем я попытался поместить прозрачный прямоугольник в SwapChainPanel. События перетаскивания теперь работают, но SwapChainPanel теперь вообще не получает событий указателя.
<SwapChainPanel x:Name="swap" >
<Rectangle Fill="Transparent" AllowDrop="True" DragEnter="Swap_DragEnter" />
</SwapChainPanel>
Третий подход:
Кажется, SwapChainPanel не работает как обычный элемент управления XAML, поэтому я предположил, что мне придется обрабатывать события перетаскивания в коде c ++, который запускает панель. Но, кажется, нет никакого способа сделать это, есть только ссылки на основные события указателя.
...
coreInput_ = renderPanel_.CreateCoreIndependentInputSource(deviceTypes);
coreInput_.PointerPressed({this, &InputManagerImpl::onPointerPressed});
coreInput_.PointerMoved({this, &InputManagerImpl::onPointerMoved});
coreInput_.PointerReleased({this, &InputManagerImpl::onPointerReleased});
coreInput_.PointerEntered({this, &InputManagerImpl::onPointerEntered});
coreInput_.PointerExited({this, &InputManagerImpl::onPointerExited});
coreInput_.PointerCaptureLost({this, &InputManagerImpl::onPointerCaptureLost});
coreInput_.PointerWheelChanged({this, &InputManagerImpl::onPointerWheelChanged});
...
Так что теперь я не уверен, как я могу выполнять операции перетаскивания? Спасибо!