최대 1 분 소요

😢상황

  • WPF의 XAML 파일을 작성하다 보면 자주 등장하는 xmlns, xmlns:x, xmlns:local
  • 그런데 이게 무엇을 의미하고, 왜 필요한지 헷갈릴 수 있음
  • 특히 사용자 정의 컨트롤을 추가하거나 외부 라이브러리를 참조할 때 더 혼란스러움

🛠️해결법

1. xmlns란?

  • XML Namespace의 줄임말
  • XAML에서 사용되는 요소(컨트롤, 객체 등)가 어느 네임스페이스에 정의되어 있는지 알려주는 역할

2. 기본 선언 예시

<Window
  xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
  • xmlns: 기본 WPF 컨트롤(Button, Grid 등)을 위한 네임스페이스
  • xmlns:x: XAML 문법 요소 (x:Name, x:Class, x:Key 등)에 사용됨

3. 사용자 정의 컨트롤을 위한 xmlns 선언

xmlns:local="clr-namespace:MyApp.Controls"
  • local은 별칭(alias)으로, 원하는 이름으로 변경 가능 (ctrl, custom 등)
  • clr-namespace:는 C#의 네임스페이스 (namespace MyApp.Controls)를 의미
  • 선언 후 <local:MyCustomControl /> 처럼 사용할 수 있음

4. 다른 프로젝트(어셈블리)에서 가져올 때

xmlns:ext="clr-namespace:ExternalLib.Controls;assembly=ExternalLib"
  • assembly=... 부분은 해당 컨트롤이 정의된 DLL(프로젝트)의 이름
  • 외부 라이브러리나 공유 프로젝트의 컨트롤을 가져올 때 필수

5. 사용 예시

<local:MyCustomControl />
<ext:FancyButton />

정리: 왜 이게 효과 있었는가?

  • xmlns 선언은 XAML에서 C# 네임스페이스와 클래스를 사용할 수 있게 만들어주는 브릿지 역할
  • 사용자 정의 컨트롤, 외부 라이브러리, 기본 WPF 컨트롤을 XAML 태그로 사용할 수 있는 핵심 구조
  • 올바른 xmlns 선언은 XAML 코드의 가독성과 모듈화에 큰 도움이 됨