다음을 통해 공유


.NET 10 미리 보기용 WPF의 새로운 기능

이 문서에서는 .NET 10 Preview의 WPF(Windows Presentation Foundation)의 새로운 기능을 개략적으로 설명합니다. 자세한 내용은 릴리스 공지 사항을 참조하세요.

.NET 10 Preview 5는 2025년 6월에 릴리스되었습니다.

릴리스 공지 사항

각 릴리스 공지 사항은 .NET 10의 WPF 변경 내용에 대한 자세한 정보를 제공합니다.

성능 향상

내부 데이터 구조를 ReadOnlyCollection<T>같은 기본 .NET 형식으로 대체하여 성능이 향상되었습니다. 이렇게 하면 UI 자동화 및 파일 대화 상자에서 할당이 최소화되고 픽셀 형식 변환 속도가 향상되었습니다.

캐시 작업, 배열 처리 및 글꼴 컬렉션 로더를 관리 코드로 마이그레이션하여 성능을 향상시켰습니다.

성능은 글꼴 렌더링, 동적 리소스, 입력 컴퍼지션, 추적 로깅, 정규식 사용 및 XAML 구문 분석에서 최적화되었습니다.

유창한 스타일 변경

WPF에서 Fluent UI 스타일 지원을 개선하기 위해 .NET 10에서 다양한 버그 수정이 해결되었습니다. Fluent UI 스타일 지원은 아직 진행 중입니다.

경고

.NET 10 미리 보기 4에는 흐름 스타일과 관련된 버그가 도입되었습니다. 자세한 내용은 .NET 10 Preview 4 릴리스 정보를 참조하세요.

클립보드 변경 사항

WPF 및 Windows Forms는 이제 동일한 클립보드 API를 사용합니다. 두 데스크톱 기술 모두 클립보드와 상호 작용하는 방식을 통합합니다.

.NET 9에서는 일부 클립보드 작업에 사용되는 BinaryFormatter가 더 이상 지원되지 않습니다. 이러한 클립보드 작업을 수행하려면 호환성 패키지를 옵트인하거나 작업을 수행해야 했습니다. .NET 10은 BinaryFormatter에서의 전환의 고통을 완화하기 위해, 특정 클립보드 메서드를 사용하지 않도록 권고하고 있습니다. 클립보드 데이터를 사용하여 JSON serialization을 지원하여 필요를 회피하기 위해 BinaryFormatter더 많은 메서드가 추가되고 있습니다.

버그 수정

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,
    }
}

기타 변경 내용

  • 더 원활한 개발 워크플로를 용이하게 하기 위해 디자인 타임 태그 컴파일을 통합했습니다.