The following tips may help you to avoid or fix them.
   1. Dispatch expensive calls either within the UI thread with a lower 
DispatcherPriority by calling Dispatcher.BeginInvoke() or to a 
background thread by using a BackgroundWorker to keep the UI responsive.
   2. Fix binding errors because they consume a lot of time, trying to 
resolve the path error, including searching for attached properties. You
 can find them by looking for System.Windows.Data Error in the Visual 
Studio output log.
   3. Reduce the number of visuals by removing unneeded elements, 
combining layout panels and simplifying templates. This keeps the memory
 footprint small and improves the rendering performance.
   4. Prevent Software Rendering. The use of transparent windows by 
setting AllowsTransparency to true or using old BitmapEffects can cause 
WPF to render the UI in software on Windows XP, which is much slower.
   5. Load resources when needed. Even thow it's the most comfortable 
way to merge all resources on application level it can also cost 
performance by loading all resources at startup. A better approach is to
 load only often used resources and load the other on view level.
   6. Virtualize lists and views by using a VirtualizingStackPanel as 
ItemsPanel for lists. This only creates the visible elements at load 
time. All other elements are lazy created when they get visible. Be 
aware that grouping or CanContextScrol="True" prevents virtualization!
   7. Enable Container Recycling. Virtualization brings a lot of 
performance improvements, but the containers will be disposed and re 
created, this is the default. But you can gain more performance by 
recycle containers by setting 
VirtualizingStackPanel.VirtualizationMode="Recycling"
   8. Freeze Freezables by calling Freeze() in code or 
PresentationOptions:Freeze="true" in XAML. This reduces memory 
consumption and improves performance, because the system don't need to 
monitor for changes.
   9. Disable Assembly localization if you don't need it. By using the 
[NeutralResourcesLanguageAttribute]. This prevents an expensive lookup 
for satelite assemblies
  10. Lower the frame rate of animations by setting 
Storyboard.DesiredFrameRate to lower the CPU load. The default is 60 
frames/second
  11. Use StreamGeometries instead of PathGeometries if possible to draw
 complex 2D geometries, because they are much more efficient and consume
 less memory.