윈폼을 건드려본 사람은 Label과 TextBox 컨트롤은 매우 친숙할 것이다. WPF에서는 여기에 TextBlock이라는 컨트롤이 추가되었는데, 무엇이 다른걸까? 우선 MSDN에서 각각의 컨트롤을 어떻게 정의했는지 살펴보자.
(이들은 모두 System.Windows.Controls 네임스페이스 정의되어 있다.)
앞서 03번째 단원에서 Content Property를 살펴본 바 있다. Content Property의 리턴타입은 Object형으로 거의 모든(Window를 제외하므로) 컨트롤을 지정할 수 있었다. 여기서 Label과 TextBlock의 기본적인 차이가 들어난다.
Label과 TextBlock과 TextBox의 자식요소
Label의 기본 자식은 Content(Object)이다.
TextBlock의 기본 자식은 Text(string)이다.
TextBox의 기본 자식은 Text(string)이다.
그렇다. Label의 자식은 Content로서, string을 포함한 그 어떤 Control이라도 지정할 수 있다. 하지만 TextBlock의 자식은 string 문자열밖에 되지 않는다. 기본 설계부터가 다른 것이다. 마음만 먹는다면 Label의 Content로 Button을 지정할 수도 있다. 물론 Text를 기본자식으로 갖는 TextBlock에서는 꿈도 꾸지 못할 일이다. Label과 TextBlock을 분류하자면 사용 용도에 따른 분류가 될것이다.
사용 용도에 따른 Label과 TextBlock의 분류
è Text만을 사용할 것이라면 TextBlock을 쓰는쪽이 가볍고 빠르다.
è Text외의 것까지 사용하고 싶다면 Label을 사용하자(추후에 변화를 주고 싶다면..)
[출처][WPF] Label, TextBlock, TextBox 첫번째 이야기|작성자 생각하는포비