Delen via


Onjuist gebruik van DynamicResource zorgt ervoor dat de toepassing vastloopt

Toepassingen die DynamicResource onjuist gebruiken, crashen nu tijdens de runtime.

Geïntroduceerde versie

.NET 10

Vorig gedrag

Voorheen zouden toepassingen die onjuist zijn geïnitialiseerd DynamicResource , blijven werken zonder vast te lopen. De waarden zouden terugvallen op de standaardwaarden en een InvalidOperationException wordt weergegeven in de uitvoer.

Nieuw gedrag

Toepassingen crashen nu met een fout die vergelijkbaar is met de volgende:

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

Dit gebeurt wanneer een onjuist resourcetype wordt gebruikt met DynamicResource. Het onderstaande codefragment veroorzaakt bijvoorbeeld een crash omdat er een SolidColorBrush wordt gebruikt in plaats van System.Windows.Media.Color:

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

Type van brekende verandering

Dit is zowel een bron-incompatibele als gedragsverandering .

Reden voor wijziging

Deze wijziging verbetert de prestaties van DynamicResource gebruik. De optimalisatie zorgt ervoor dat onjuiste resource-initialisatie onmiddellijk wordt gedetecteerd, waardoor onbedoeld gedrag wordt voorkomen.

Om crashes te voorkomen, moet u ervoor zorgen dat de juiste resourcetypen worden gebruikt met DynamicResource. Met de volgende code wordt het probleem bijvoorbeeld opgelost met behulp System.Windows.Media.Color van SolidColorBrush:

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

Betreffende API's

Geen.