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
なし。
GitHub で Microsoft と共同作業する
このコンテンツのソースは GitHub にあります。そこで、issue や pull request を作成および確認することもできます。 詳細については、共同作成者ガイドを参照してください。
.NET