Hello,
The RenderForm that you are talking about is just a little utility class used to make the SharpDX demos simpler to read. Ideally you'd want to drop that and handle it yourself so you have full control over everything. Actually if you're moving to WPF you WILL have to drop that RenderForm class. So before hooking to an already existing swapchain I'd suggest turning your code around to drop RenderForm and create your own swapchain so you at least get familiar with it. A swapchain is nothing more than a surface used to present an image to the screen and is internally using one or many textures as buffer.
Unfortunately I can't find any SharpDX demo that cover exactly this but there is some C++ examples. SharpDX expose exactly the same functionalities so it should not be too hard to translate a C++ sample. https://code.msdn.microsoft.com/XAML-SwapChainPanel-00cb688b/sourcecode?fileId=99187&pathId=40359581
EDIT: It may be even simpler than I thought. Look at this part of the C++ example :
//Get backing native interface for SwapChainPanel.
ComPtr<ISwapChainPanelNative> panelNative;
ThrowIfFailed(
reinterpret_cast<IUnknown*>(this)->QueryInterface(IID_PPV_ARGS(&panelNative))
);
// Associate swap chain with SwapChainPanel. This must be done on the UI thread.
ThrowIfFailed(
panelNative->SetSwapChain(m_swapChain.Get())
);
Where "this" is actually the current instance of a SwapChainPanel. It is being queried to retrieve the ISwapChainPanelNative on which you can call SetSwapChain(IntPtr). So basically it sounds like you can create everything normally in SharpDX and pass your swapchain's IntPtr to this method. The IntPtr of a SharpDX swapchain is simply the "NativePointer" property.