I agree with Arseny, learning MVVM is core to learning WPF properly. It isn't a niche thing - when applied properly it can make your code cleaner, simpler and promotes decoupling and unit testing.
There is a very nice video here which explains both the concept and implementation:
Jonas Follesø explains the MVVM Design Pattern. In the video the guy is talking about Silverlight but the implementation in WPF is pretty much identical.
Once you've watched the video, and you're happy with the basics of WPF you could do alot worse than adopt a framework to take much of the heavy lifting and plumbing off your hands. I highly reccommend Caliburn Micro. This will lead you down the path of best practice by encouraging you to use MVVM but will also take care of much of the coding detail for you. The documentation on the site is a bit thin on the ground but there are a number of tutorials there that are being steadily added to.
For example, when following MVVM you would typcially have a View (e.g. a window) and ViewModel (a C# class). If you had a textbox on the view which contained an order number, you would have a corresponding property on your ViewModel called OrderNumber. Using a WPF Binding expression:
<TextBox x:Name="OrderNumber" Text="{Binding OrderNumber}" />
the textbox would be bound to the property on your ViewModel so that when either the textbox or the property changes, the other automatically updates. Using a framework like Caliburn Micro you don't have to write any binding expressions, it uses a simple convention based approach. In the previous example, if your textbox was called OrderNumber and your ViewModel property was called OrderNumber Caliburn assumes they must be the same thing and automatically binds them for you.
<TextBox x:Name="OrderNumber" />
As above, your XAML becomes much simpler, and leaves you to focus on getting the job done. I wish I'd found a framework like this earlier before I started churning out lots of my own ViewModelBase classes, ViewLocaters etc.