😢상황
- 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 코드의 가독성과 모듈화에 큰 도움이 됨