WPF - это то, что Viewport3D не может сделать (есть множество вещей, которые он не может сделать), весь WPF основан на DirectX. Это также означает, что DirectX обычно намного лучше поддерживается в WPF.
Однако вы можете использовать OpenTK WinForms viewport и использовать WinFormsHost , чтобы поместить его в ваше приложение. OpenTK - очень хорошая оболочка .Net для OpenGL.
Однако вы не сможете использовать XAML, привязки и другие специфичные для WPF вещи. Вам придется делать вызовы OpenGL вручную из кода. Все, что делает взаимодействие - это помещает область просмотра в ваше приложение и позволяет вам делать вызовы .Net.
Возможно, вы также захотите взглянуть на этот проект .