When we reference our resources, we can either use a StaticResource or a DynamicResource. If you remember from Chapter 5, Using the Right Controls for the Job, a StaticResource will look up the value of the resource just once, which is comparative to a compile-time lookup. A DynamicResource will repeatedly look up the value of the resource each time it is requested, whether it has changed or not, like a runtime lookup.
For this reason, we should only ever use a DynamicResource if we really need to, and can attain much better performance by using the StaticResource class instead. If we find that we need to use a lot of DynamicResource references to access our resources, then we can refactor our code to data bind to properties in our StateManager class instead of the resources, in order to increase performance.
Another simple way to improve the performance of our resources is to reuse them. Instead of declaring them inline in the place that they are used...