검색결과 리스트
BlackLight에 해당되는 글 1건
- 2008/12/26 Blacklight를 이용한 컨트롤 크기 자동 조절하기
글
우선 블랙라이트라는 것이 무언인지를 궁금해 하실것 같아서 한마디 쓰고 들어가겠습니다.
블랙라이트는 WPF또는 실버라이트에서 사용이 가능한 라이브러리(?)같은 것입니다.
블랙라이트에 제공하는 컨트롤이 몇개 있는데 이번시간에 사용할 컨트롤은 DragDockPanel이라는 것입니다.
이것을 사용하는 방법은 간단합니다.
이렇게 사용을 하시면 됩니다.
MinimizedColumnWidth는 창이 최소화 될때의 가로 크기 MinimizedRowHeight는 창이 최소화 됐을때의 세로크기 입니다. MinimizedPosition는 창의 최소화 되고 하나만 최대화 됐을때 최소화 된 창들을 어디에 둘건지를 물어보는 겁니다. 저는 아래쪽으로 설정하는 Bottom값을 줬습니다.
DragDockPanelHost안에 DragDockPanel을 원하는 만큼 넣어 주시면 자리는 알아서 잡게 됩니다.
그리고 여기서 각각의 DragDockPanel이 크기가 수시로 커지고 줄어들고 합니다. 그래서 거기에 맞춰서 컨트롤의 크기를 조절 하기 위해서 저는 SizeChanged라는 이벤트를 사용하였습니다. 이 컨트롤은 Maximized나 Minimized같은 이벤트도 사용이 가능합니다. 다만, 이 컨트롤이 발생을 하였을때는 분명이 최대화가 된다음에 이벤트가 발생을 하는것이 아닌 최대화 버튼을 클릭을 했을때 이벤트가 발생을 하게 되고, 그때의 크기를 구할 수 밖에 없습니다. 그래서 전 SizeChanged라는 것을 이용하여 하였습니다.
SizeChanged라는 것을 사용하였기 때문에 이제는 이제는 크기가 변할때마다 이벤트가 발생을 하게 됩니다. 이 이벤트를 처리를하는 함수를 잠깐 보겠습니다.
여기서는 e.NewSize는 사이즈가 변화가 되면서 새로운 사이즈고 당연히 PreviousSize라고 해서 이전의 사이즈를 알 수도 있습니다. 이제 변화하는 사이즈를 알았으니 그에 맞게 사이즈를 조절을 하면 됩니다.
여기서는 또다른 함수를 호출을 하게 됩니다. 여기서부터는 사용하시는 분 마음대로 수정을 하여도 상관이 없습니다. 저의 경우를 보게 된다면 각각의 DragDockPanel에 들어가는 것은 제가 만든 사용자 컨트롤로써 news는 뉴스를 검색한것을 보여주는 컨트롤, images는 이미지 검색을 해서 보여주는 컨트롤 입니다. 각각의 사용자컨트롤에서 이 사이즈를 이용해서 컨트롤에 변화를 주는 부분을 보여드리겠습니다.
lbNaver는 네이버뉴스검색화면은 보여주는 ListBox입니다. Size 형식으로 받은 size의 값을 통해서 컨트롤의 크기를 지정해주고 있습니다. if (size.Height > 64 && size.Width > 21) 이부분은 제가 Margin값으로 컨트를을 줬기 때문에 그 여백만큼의 크기는 제외하고 값을 주기 위해서 입니다. 혹 이 if문을 안주게 되면 size.Height 값이 0이 넘어올때도 있는데 0에 -64를 하게 되면은 음수값이 되어서 에러를 발생합니다. Size는 구조체 형식으로 Height및 Width값을 가지고 있습니다. 앞에서 넘겨주는 형식이 Size형식이기 때문에 이 형식을 사용한 것 입니다.
이 그림은 전의 그림과는 크게 다를것이 없습니다. ImageTabControl은 TabControl의 가로 크기를 조절을 하는것입니다. if문은 왜 쓴것인지 아시겠죠??
그럼 여기서 마치겠습니다. 질문 사항이 있으시면 댓글로 남겨주세요
RECENT COMMENT