로딩
요청 처리 중입니다...

리소스 탐색 순서를 모르면 결국 꼬인다

 리소스 탐색 순서를 모르면 결국 꼬인다

XAML을 오래 쓰다 보면 한 번쯤 이런 경험을 한다. 분명히 정의해 둔 색상인데 안 먹는다.

같은 키인데 어떤 화면에서는 다르게 적용된다. MergeDictionary 순서를 바꿨더니 갑자기 UI가 깨진다.

처음에는 “버그인가?” 싶다.

그런데 대부분은 리소스 탐색 순서를 제대로 이해하지 못해서 생기는 문제다. XAML 리소스는 ‘위에서 아래’가 아니다 많이 오해하는 부분이 이거다.

위에 정의하면 먼저 적용될 것 같지만, 실제로는 탐색 체인이 따로 있다. 리소스는 단순한 파일 포함 개념이 아니다.

XAML 런타임은 리소스 트리(Resource Tree)를 따라 올라가며 탐색한다. 기본적인 탐색 순서는 이렇다.

현재 컨트롤의 Resources 부모 컨트롤의 Resources 상위 컨테이너를 계속 타고 올라감 Window / Page의 Resources Application의 Resources Theme Dictionary 시스템 리소스 즉, 가장 가까운 곳이 항상 우선이다. CSS와...