Из вашего вопроса на самом деле не ясно, сколько опыта и знаний вы уже получили.У нас есть навыки программирования, и у нас есть навыки C # / .NET, и у нас есть навыки WPF, каждый из которых отличается.
1) Навыки программирования: вам необходимо иметь четкое представление о методах программирования, ООП, алгоритмах, шаблонах проектирования.... но вы, вероятно, приобретете это по ходу дела.
2) Навыки C # /. NET: Точное понимание C # объекта, массива, делегата, переменной, типа значения ссылочного типа, обобщений, ... вы уже можетеимейте это знание, но если нет, то есть много хороших книг вокруг, просто купите или одолжите одну
3) WPF: Просто получите открытую книгу Адама Натана.И выучите MVVM или MVVM lite.