次の方法で共有


WPF for .NET 10 Preview の新機能

この記事では、.NET 10 Preview の Windows Presentation Foundation (WPF) の新機能の概要について説明します。 詳細については、 リリースのお知らせを参照してください。

.NET 10 Preview 5 は 2025 年 6 月にリリースされました。

リリースのお知らせ

各リリースのお知らせでは、.NET 10 の WPF の変更に関する詳細情報が提供されます。

パフォーマンスの向上

内部データ構造をベース .NET 型 (ReadOnlyCollection<T>など) に置き換えることで、パフォーマンスが向上しました。 これにより、UI オートメーションとファイル ダイアログでの割り当てが最小限に抑えられ、ピクセル形式の変換が高速化されます。

キャッシュ操作、配列処理、およびフォント コレクション ローダーをマネージド コードに移行することで、パフォーマンスが向上しました。

パフォーマンスは、フォント レンダリング、動的リソース、入力コンポジション、トレース ログ、正規表現の使用、XAML 解析全体で最適化されました。

流暢なスタイルの変更

WPF での Fluent UI スタイルのサポートを向上させるために、.NET 10 ではさまざまなバグ修正が行われています。 Fluent UI スタイルのサポートはまだ進行中です。

Warnung

.NET 10 Preview 4 では、fluent スタイルに関連するバグが導入されました。 詳細については、 .NET 10 Preview 4 のリリース ノートを参照してください。

クリップボードの変更

WPF フォームと Windows フォームでは、同じクリップボード API が使用されるようになりました。 どちらのデスクトップ テクノロジも、クリップボードとの対話方法を統一します。

BinaryFormatter は .NET 9 で非推奨扱いになりましたが、一部のクリップボード操作に使用されています。 それにより、該当するクリップボード操作のために互換性パッケージにオプトインするか、該当する操作を回避することが必要になっていました。 .NET 10 では、BinaryFormatter からの移行を促進するために一部のクリップボード メソッドが非推奨となり、使用すべきでないことが示されました。 BinaryFormatter の必要性をなくしていくために、クリップボード データの JSON シリアル化に役立つメソッドの追加が進められています。

バグの修正

UI 要素のカーソルの種類、ビットマップ ストリームが null の場合のクラッシュの問題、ビルドとテストのステップ エラー、BitmapMetadata とネイティブの依存関係の軽微なバグなど、さまざまなバグ修正に対処しました。

ScrollViewerContextMenuのローカライズに関する問題に対処しました。

System.XamlWindowsBase のための4,000以上の単体テストが追加されました。

キャッシュ操作、配列処理、およびフォント コレクション ローダーをマネージド コードに移行することで、パフォーマンスが向上しました。

コードのクリーンアップ

.NET Framework から移動すると、未使用のコード アクセス セキュリティ (CAS) 関連の属性とコードが残されます。 これらの多くは、.NET コードベースで削除されています。

  • 未使用の CAS リソース文字列とその翻訳をすべてのライブラリから削除します。
  • OleCmdHelper/ISecureCommandから未使用の CAS および XBAP コードを削除します。
  • FontSourceCollection/FontSourceから未使用の CAS コードを削除します。

コードの読みやすさと保守容易性を向上させるために、構文の標準化や引数の明確さを含む広範なコード クリーンアップを実施しました。 デバッグ パターンが最新化され、保守容易性のために ArrayList などのレガシ コンストラクトが段階的に廃止されました。

新しい API

コミュニティの共同作成者 bstordrup は、より多くのボタンと結果のオプションで MessageBox を強化しました。 詳細については、 #9613 を参照してください。

namespace System.Windows
{
    public enum MessageBoxButton
    {
        OK = 0,
        OKCancel = 1,
+       AbortRetryIgnore = 2,
        YesNoCancel = 3,
        YesNo = 4,
+       RetryCancel = 5,
+       CancelTryContinue = 6,
    }

    public enum MessageBoxResult
    {
        None = 0,
        OK = 1,
        Cancel = 2,
+       Abort = 3,
+       Retry = 4,
+       Ignore = 5,
        Yes = 6,
        No = 7,
+       TryAgain = 10,
+       Continue = 11,
    }
}

その他の変更

  • よりスムーズな開発ワークフローを容易にするために、設計時マークアップのコンパイルを組み込みました。