使用 DynamicResource 错误的应用程序现在在运行时崩溃。
已引入的版本
.NET 10
以前的行为
以前,未正确初始化 DynamicResource 的应用程序将继续运行,而不会崩溃。 这些值将回退到默认值,并且输出中会显示一个 InvalidOperationException 值。
新行为
应用程序现在崩溃,出现如下错误:
System.Windows.Markup.XamlParseException: Set property 'System.Windows.ResourceDictionary.Source' threw an exception.
当使用 DynamicResource不正确的资源类型时,会出现这种情况。 例如,下面的代码片段会导致崩溃,因为使用了一个 SolidColorBrush 代码片段,而不是 System.Windows.Media.Color:
<SolidColorBrush x:Key="RedColorBrush" Color="#FFFF0000" />
<SolidColorBrush x:Key="ResourceName" Color="{DynamicResource RedColorBrush}" />
破坏性变更的类型
更改原因
此更改可提升 DynamicResource 的性能。 优化可确保立即捕获不正确的资源初始化,从而防止意外行为。
建议的措施
为了避免崩溃,请确保正确使用DynamicResource资源类型。 例如,以下代码通过使用 System.Windows.Media.Color 而不是 SolidColorBrush 来解决问题。
<Color x:Key="RedColor">#FFFF0000</Color>
<SolidColorBrush x:Key="ResourceName" Color="{DynamicResource RedColor}" />
受影响的 API
没有。