When using resources such as brushes, templates and styles in WPF, they can be specified either as StaticResources
<Rectangle Fill="{StaticResource MyBrush}" />
or as a DynamicResource
<ItemsControl ItemTemplate="{DynamicResource MyItemTemplate}" />
Most of the times (always?), only one works and the other will throw exception during runtime. But I'd like to know why:
- What is the main difference. Like memory or performance implications
- Are there rules in WPF like "brushes are always static" and "templates are always dynamic" etc.?
I assume the choice between Static vs Dynamic isn't as arbitrary as it seems... but I fail to see the pattern.