Wenn Ressourcen wie Pinsel, Vorlagen und Stile in WPF verwendet werden, können sie entweder als StaticResources angegeben werden
<Rectangle Fill="{StaticResource MyBrush}" />
oder als DynamicResource
<ItemsControl ItemTemplate="{DynamicResource MyItemTemplate}" />
Meistens (immer?) funktioniert nur eine und die andere löst während der Laufzeit eine Ausnahme aus. Aber ich würde gerne wissen, warum:
- Was ist der Hauptunterschied? Wie Speicher oder Auswirkungen auf die Leistung
- Gibt es in WPF Regeln wie "Pinsel sind immer statisch" und "Vorlagen sind immer dynamisch" usw.?
I annehmen die Wahl zwischen statisch und dynamisch ist nicht so willkürlich, wie es scheint... aber ich kann das Muster nicht erkennen.
33 Stimmen
Es ist wichtig zu beachten, dass Windows 8 App-Entwickler keine DyanmicResource als Option haben, nur StaticResource.
2 Stimmen
@Jerry Nixon Gott sei Dank, ich habe nicht mehr gezählt, wie oft ich etwas nicht zum Laufen gebracht habe, weil ich DynamicResource statt StaticResource oder umgekehrt verwendet habe. Aus der Sicht des Programmierers ist das eine unnötige Komplexität. Eine Analogie dazu ist die Definition von Variablen. Sollte ich explizit angeben müssen, ob sie auf dem Heap oder dem Stack liegen? Und wenn ich das falsch mache, kommt es zu einem katastrophalen Laufzeitfehler?
0 Stimmen
Eine genauere Erläuterung von StaticResource und DynamicResource und wann sie zu verwenden sind, finden Sie unter msdn.microsoft.com/de-us/library/ms750613%28v=vs.100%29.aspx .