Sdílet prostřednictvím


Nesprávné použití DynamicResource způsobuje chybové ukončení aplikace

Aplikace, které používají DynamicResource nesprávně, nyní selhávají během běhu.

Verze byla představena

.NET 10

Předchozí chování

Dříve aplikace, které nesprávně inicializovaly DynamicResource, běžely nadále bez chybového ukončení. Hodnoty by se vrátily k výchozím nastavením a ve výstupu by se zobrazilo InvalidOperationException.

Nové chování

Aplikace se nyní zhroutí s chybou podobnou následující.

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

K tomu dochází, když se s DynamicResource používá nesprávný typ prostředku. Následující fragment kódu například způsobí chybové ukončení, protože SolidColorBrush se používá místo System.Windows.Media.Color:

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

Typ zásadní změny

Toto je změna, která je jak nekompatibilní se zdrojem, tak chování.

Důvod změny

Tato změna zlepšuje výkon použití DynamicResource. Optimalizace zajišťuje, že se okamžitě zachytí nesprávná inicializace prostředků, což brání nezamýšleným chováním.

Abyste se vyhnuli chybám, ujistěte se, že jsou použity DynamicResource správné typy prostředků. Například následující kód vyřeší tento problém použitím System.Windows.Media.Color namísto SolidColorBrush.

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

Ovlivněná rozhraní API

Žádné.