То, что вы описываете, является сложным процессом, включающим много рефакторинга и извлечения кода.
Что вам нужно сделать, это добавить несколько отдельных проектов в решение Visual Studio - и переместить всю вашу повторно используемую логику в проект библиотеки классов. Вам нужно будет настроить пространства имен и тому подобное ... но весь ваш повторно используемый код должен идти туда.
Ваше приложение WPF должно затем ссылаться на проект библиотеки классов, и вы можете продолжать его использовать ... разница в том, что теперь у вас может быть проект Win Forms в решении, которое ТАКЖЕ использует библиотеку классов ...
фактически вы извлекаете свой код домена из пользовательского интерфейса в максимально возможной степени ... вы можете написать веб-приложение, которое будет использовать ту же библиотеку ...