Partilhar via


O uso incorreto do DynamicResource causa falha no aplicativo

Aplicações que usam DynamicResource incorretamente agora crasham em tempo de execução.

Versão introduzida

.NET 10

Comportamento anterior

Anteriormente, os aplicativos inicializados DynamicResource incorretamente continuavam em execução sem falhar. Os valores voltariam aos padrões e um InvalidOperationException apareceria na saída.

Novo comportamento

Os aplicativos agora falham com um erro semelhante ao seguinte:

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

Isso ocorre quando um tipo de recurso incorreto é usado com DynamicResource. Por exemplo, o trecho de código abaixo causa uma falha porque a SolidColorBrush é usado em vez de System.Windows.Media.Color:

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

Tipo de mudança disruptiva

Trata-se de uma mudançacomportamental e incompatível com a fonte.

Motivo da mudança

Esta alteração melhora o desempenho na utilização de DynamicResource. A otimização garante que a inicialização incorreta de recursos seja detetada imediatamente, evitando comportamentos não intencionais.

Para evitar falhas, assegure-se de que os tipos de recursos corretos sejam usados com DynamicResource. Por exemplo, o código a seguir resolve o problema usando System.Windows.Media.Color em vez de SolidColorBrush:

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

APIs afetadas

Nenhum.