Udostępnij przez


Nieprawidłowe użycie usługi DynamicResource powoduje awarię aplikacji

Aplikacje, które używają DynamicResource niepoprawnie teraz ulegają awarii w czasie wykonywania.

Wersja wprowadzona

.NET 10

Poprzednie zachowanie

Wcześniej aplikacje, które niepoprawnie zainicjowały DynamicResource, działałyby nadal bez awarii. Wartości zostaną przywrócone do wartości domyślnych, a w danych wyjściowych pojawi się InvalidOperationException.

Nowe zachowanie

Aplikacje ulegają awarii z powodu błędu podobnego do następującego:

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

Dzieje się tak, gdy nieprawidłowy typ zasobu jest używany z DynamicResource. Na przykład poniższy fragment kodu powoduje awarię, ponieważ SolidColorBrush element jest używany zamiast System.Windows.Media.Color:

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

Typ zmiany przełamującej

Jest to zarówno niekompatybilna ze źródłem jak i zmiana behawioralna.

Przyczyna zmiany

Zmiana ta poprawia wydajność użycia DynamicResource. Optymalizacja gwarantuje, że nieprawidłowe inicjowanie zasobów jest przechwytywane natychmiast, uniemożliwiając niezamierzone zachowanie.

Aby uniknąć awarii, upewnij się, że poprawne typy zasobów są używane z programem DynamicResource. Na przykład następujący kod rozwiązuje problem przy użyciu polecenia System.Windows.Media.Color zamiast SolidColorBrush:

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

Interfejsy API, których dotyczy problem

Żaden.