.NET MAUI 10 Preview 5에서 XAML 코드를 단순화하는 방법은?

:pushpin: .NET MAUI 10 Preview 5에서 XAML 코드를 단순화하는 방법은?

글로벌 네임스페이스를 정의하여 각 페이지에서 반복적으로 네임스페이스를 선언할 필요 없이 컨트롤을 직접 사용할 수 있게 됩니다.

:light_bulb: 이 기능의 장점은 무엇인가요?

  • 네임스페이스 정의를 크게 줄일 수 있습니다.

  • 접두사 사용을 피할 수 있습니다.

목차

1. :sparkles: .NET MAUI 10에서 XAML의 장황함을 해결하는 새로운 접근

2. :globe_with_meridians: 네임스페이스와 글로벌 선언의 간소화

3. :rocket: 최신 .NET MAUI 설치와 네임스페이스 구성 이해

4. :glowing_star: 네임스페이스와 컨트롤 사용의 간소화

5. :rocket: .NET MAUI 10 미리보기 기능 소개

이 비디오는 .net maui 10에서 xaml 코드를 단순화하는 새로운 기능에 대해 설명합니다. xaml의 장황함을 줄이고 코드의 가독성을 높이는 데 초점을 맞추고 있습니다. 특히, 전역 네임스페이스 사용을 통해 코드 내에서 반복적인 네임스페이스 정의를 피할 수 있게 되었습니다. 이를 통해 개발자는 더 간결하고 유지보수하기 쉬운 코드를 작성할 수 있습니다. 이 기능은 .net maui 개발자가 xaml 코드를 더욱 효율적으로 관리하고 개발 생산성을 향상시키는 데 도움이 됩니다. .net maui 10은 xaml 코드를 간결하게 만들어 개발 경험을 향상시키는 데 중점을 두고 있습니다.

핵심 용어

  • .NET MAUI: .NET MAUI(닷넷 멀티 플랫폼 앱 UI)는 하나의 코드베이스로 iOS, Android, Windows, macOS 등 다양한 플랫폼에서 실행되는 앱을 만들 수 있게 해…

1. :sparkles: .NET MAUI 10에서 XAML의 장황함을 해결하는 새로운 접근

  • XAML은 사용자 인터페이스를 정의할 때 비즈니스 로직과 분리하여 유연하게 사용할 수 있지만, 지나치게 장황해져 많은 코드 작성을 필요로 하는 점이 주요 비판으로 지적되어 왔다 .

  • .NET MAUI 10의 Preview 5에서는 샤멜 관련 코드의 장황함을 줄이고 개발 과정의 복잡성을 단순화하는 새로운 기능이 소개되었다 .

  • 동일한 응용 프로그램을 개발할 때, 새로운 기능 도입으로 인해 이전과는 무언가 다른 점을 체감할 수 있다 .

  • 이러한 변화는 개발자들이 불필요한 반복과 불편함을 줄이고, 코드의 가독성과 유지보수성을 높일 수 있도록 지원한다 .

2. :globe_with_meridians: 네임스페이스와 글로벌 선언의 간소화

  • 기존에는 콘텐츠 페이지의 작성 시 12줄이 필요했고, 일부 경우 7줄도 요구되었으며, 이는 네임스페이스 선언의 복잡성 때문이다 .

  • 최근 블로그 글에서는 이러한 복잡성을 줄이기 위한 간소화 방법이 소개되었다 .

  • 글로벌 네임스페이스 선언은 한 번만 정의하면, 여러 파일에서 재사용이 가능하며, 별도로 재정의할 필요가 없다고 언급된다 .

  • Visual Studio에서는 이미 글로벌 수준에서 정의된 네임스페이스와 객체들을 재차 선언할 필요가 없으며, 이는 코드의 간결화와 유지보수 용이성을 높인다 .

  • 앞으로 출시될 Punch and Sketch 10 Preview 5에서는 이런 네임스페이스 선언의 간소화 방식을 새롭게 도입한다 .

3. :rocket: 최신 .NET MAUI 설치와 네임스페이스 구성 이해

  • 최신 버전의 .NET MAUIWorkload를 설치해야 하며, 본 영상은 .NET 10을 기준으로 설명한다 .

  • 네임스페이스는 항상 NET 2021 Maui로 정의하며, 수정 시 닷넷 마위 글로벌과 같이 변경한다 .

  • 네임스페이스를 활용하여 클래스와 컨트롤을 생성, 선언하며, 어셈블리 레벨에서 정의하는 것이 일반적이다 .

  • 글로벌 XMLNs와 유사하게 네임스페이스를 선언하며, 이를 통해 페이지 모델과 컨트롤을 쉽게 참조할 수 있다 .

  • :memo: 네임스페이스와 페이지 구성을 통한 코드 구조화

    • 프로젝트 내 페이지는 명확한 네임스페이스 구성을 통해 모델, 페이지, 컨트롤, 그리고 글꼴까지 포함한다 .

    • 반복적으로 네임스페이스를 정의하며, 각 페이지마다 필요한 네임스페이스를 생성해 구조화한다 .

    • 이렇게 구조화된 네임스페이스는 코드의 간결성재사용성을 높이며, 정의 위치도 명확하다 .

  • :wrench: 컨트롤 및 카테고리 차트 접근

    • 컨트롤과 도구는 네임스페이스 내에서 정의하며, 예를 들어 첫 번째 네임스페이스두 번째 네임스페이스를 만든다 .

    • 정의된 네임스페이스 내에서 제어카테고리 차트 등 구체적인 요소에 접근한다, 해당 정의는 메인 페이지 등에서 활용된다 .

    • 개발자는 자신만의 커스텀 제어차트를 네임스페이스 내에 정의하여 사용할 수 있다 .

4. :glowing_star: 네임스페이스와 컨트롤 사용의 간소화

  • 새로운 방식에서는 별도로 네임스페이스를 설정하지 않고 컨트롤을 바로 사용할 수 있다

  • 이전에는 네임스페이스를 지정하고 별도로 컨트롤을 불러와야 했기 때문에 복잡성이 증가했다

  • 외부 라이브러리에 정의된 컨트롤도 사용 어셈블리 이름만으로 바로 활용 가능해졌다

  • 프로젝트 내에서 같은 어셈블리 내에 정의된 컨트롤이나 페이지는 별도 네임스페이스 설정 없이 재사용할 수 있다

  • 이 변경은 중복 코드를 줄이고, 간단한 사용을 가능하게 만들어 효율성을 높인다

5. :rocket: .NET MAUI 10 미리보기 기능 소개

  • Visual Studio에서 지폐의 시간과 뒷면 기능이 약간 더 느려질 수 있다는 점이 언급된다 .

  • 실수가 아니며, 계속해서 컴파일이 가능하며, 오류 수정 시 개선될 것이라고 강조한다 .

  • 미리보기 상태에서는 일부 기능들이 제한적이며, 출시 후 바로 사용할 수 있다고 설명한다 .

  • 새로 추가된 기능 중 하나는 네임스페이스 정의와 갈등 해결 옵션이며, 이는 현재 미리보기 단계에 있다 .

  • 네임스페이스 간 충돌 해결 옵션이 있으며, 예를 들어 동일 유형이 여러 네임스페이스에 존재할 때 해결 방법을 제공한다 .

  • 이 기능들이 개발자에게 향후 런타임 성능에 영향을 미칠 가능성에 대해 언급한다 .

  • 현재는 테스트 단계이며, 생산 출시 전이라서 실험 프로젝트에서 사용해보라고 권장한다 .

  • 기능의 유용성흥미로움에 대해 의견을 요청하며, 컨텐츠 참여를 독려한다 .

1개의 좋아요

1. 배경

.NET MAUI에서 XAML은 UI 구성 방식으로 널리 사용되지만, 네임스페이스 선언과 prefix 사용 때문에 상당히 장황해질 수 있습니다. 특히 파일마다 xmlns를 반복 선언하고, prefix를 다르게 붙이는 경우가 많아 코드 가독성이 떨어지는 문제점이 있었습니다. devblogs.microsoft.com

2. 주요 변경사항: Implicit & Global Namespaces 도입

  • XAML에서 C#의 글로벌 using 개념을 도입해 global/implicit XML namespace 지원 도입 (Preview 5부터)
  • 이를 통해:

설정 방법:

<PropertyGroup>
  <DefineConstants>$(DefineConstants);MauiAllowImplicitXmlnsDeclaration</DefineConstants>
  <EnablePreviewFeatures>true</EnablePreviewFeatures>
</PropertyGroup>

이 설정 후, 아래 기본 namespace들을 자동 포함:

변경 전후 비교:

  • Before:
<ContentPage xmlns="…maui"
             xmlns:x="…xaml"
             x:Class="…">
  • After:
<ContentPage x:Class="…">

→ 선언이 크게 간결해졌습니다.

3. Global Namespace 등록

  • 개발자가 정의한 클래스나 third‑party control에 대해 GlobalXmlns.cs 파일을 통해 전역 네임스페이스로 등록:
[assembly: XmlnsDefinition("http://schemas.microsoft.com/dotnet/maui/global", "MyApp.ViewModels")]
  • 서로 다른 네임스페이스의 타입 이름이 충돌할 경우 XmlnsPrefix를 함께 지정해 prefix 유지 가능 devblogs.microsoft.com

4. 제한사항 및 주의점


:white_check_mark: 장단점 한눈에 보기

장점 단점 / 주의사항
코드 선언 간결화, 네임스페이스 반복 줄임 프리뷰 단계로 붉은 경고 표시, 성능 저하 가능성 존재
prefix 생략으로 가독성 향상 충돌 가능성 있는 타입에 대해 prefix 유지 필요
코드 일관성 증가 여전히 x: prefix는 필수 (XAML 작동을 위해)

:wrench: 요약 정리

  • 목표: 반복적인 XAML xmlns 선언 제거 및 코드 간결화
  • 방법: .NET 10 Preview 5에서 Implicit/Global XML namespace 지원
  • 설정 방법: 프로젝트 설정에 MauiAllowImplicitXmlnsDeclarationEnablePreviewFeatures
  • 주의: 프리뷰 기능이므로 안정화 전까지는 문제가 발생할 수 있음
1개의 좋아요