Felaktig användning av DynamicResource orsakar programkrasch

Applikationer som använder DynamicResource felaktigt kraschar nu vid körning.

Version lanserad

.NET 10

Tidigare beteende

Tidigare skulle program som felaktigt initierats DynamicResource fortsätta att köras utan att krascha. Värdena återgår till standardvärdena och ett InvalidOperationException visas i utdata.

Nytt beteende

Program kraschar nu med ett fel som liknar följande:

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

Detta inträffar när en felaktig resurstyp används med DynamicResource. Kodfragmentet nedan orsakar till exempel en krasch eftersom en SolidColorBrush används i stället för System.Windows.Media.Color:

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

Typ av brytande ändring

Detta är både en käll-inkompatibel och beteendeförändring .

Orsak till ändring

Den här ändringen förbättrar användningens DynamicResource prestanda. Optimeringen säkerställer att felaktig resursinitiering fångas omedelbart, vilket förhindrar oavsiktligt beteende.

För att undvika krascher kontrollerar du att rätt resurstyper används med DynamicResource. Följande kod löser till exempel problemet med hjälp System.Windows.Media.Color av i stället för SolidColorBrush:

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

Berörda API:er

Ingen.