Freigeben über


Falsche Verwendung von DynamicResource verursacht Anwendungsabsturz

Anwendungen, die DynamicResource zur Laufzeit falsch verwenden, stürzen jetzt ab.

Eingeführte Version

.NET 10

Vorheriges Verhalten

Zuvor haben Anwendungen, die DynamicResource falsch initialisiert haben, ohne abzustürzen weitergearbeitet. Die Werte würden zu den Standardwerten zurückkehren, und ein InvalidOperationException würde in der Ausgabe angezeigt werden.

Neues Verhalten

Anwendungen stürzen jetzt mit einem Fehler ab, der der folgenden ähnelt:

System.Windows.Markup.XamlParseException: Set property 'System.Windows.ResourceDictionary.Source' threw an exception.

Dies tritt auf, wenn ein falscher Ressourcentyp mit DynamicResource verwendet wird. Der folgende Codeausschnitt verursacht z. B. einen Absturz, da statt SolidColorBrush ein System.Windows.Media.Color verwendet wird.

<SolidColorBrush x:Key="RedColorBrush" Color="#FFFF0000" />
<SolidColorBrush x:Key="ResourceName" Color="{DynamicResource RedColorBrush}" />

Art der einschneidenden Änderung

Dies ist sowohl eine quellinkompatible als auch eine verhaltensbasierte Änderung.

Grund für Änderung

Die Nutzung von DynamicResource wird durch diese Änderung verbessert. Durch die Optimierung wird sichergestellt, dass die falsche Ressourceninitialisierung sofort abgefangen wird und unbeabsichtigtes Verhalten verhindert wird.

Um Abstürze zu vermeiden, stellen Sie sicher, dass die richtigen Ressourcentypen mit DynamicResource verwendet werden. Der folgende Code behebt beispielsweise das Problem, indem System.Windows.Media.Color anstelle von SolidColorBrush verwendet wird:

<Color x:Key="RedColor">#FFFF0000</Color>
<SolidColorBrush x:Key="ResourceName" Color="{DynamicResource RedColor}" />

Betroffene APIs

Keiner.