WPF 메뉴, 메뉴아이템, Menu, MenuItem
n 메뉴는 윈도우 응용 프로그램의 대표적인 사용자 인터페이스로 윈도우 창 제목아래 위치하고 보통 윈도우와 같은 폭(Width)을 가진다.
n 텍스트로 구성된 가로방향 리스트로 탑레벨 메뉴를 클릭하면 드롭다운 메뉴 또는 하위 메뉴라고 불리는 다른 항목들의 리스트가 나타나게 된다.
n 클래스 계층구조
System.Windows.Controls.ContentControl
System.Windows.Controls.MenuItem
System.Windows.Controls.Menu
n ContentControl에서 파생된 컨트롤은 Content 프로퍼티를 가지는데 Button, Label, Tooltip, ScrollViewer, Listbox, Window등이 있다.
n ItemControl에서 파생된 컨트롤은 객체의 Collection인 Items 프로퍼티를 가지는데 Listbox, ComboBox 등이 해당된다.
n HeaderedItemControl은 ITemsControl로부터 상속받은 프로퍼티 이외에 Header 프로퍼티를 가지고 있는데 메뉴 항목들이 여기에 속한다. MenuItem 객체의 Header 프로퍼티는 텍스트 문자열 또는 작은 비트맵과 함께 정의할 수 있다.
n 각 메뉴항목에는 하위 메뉴의 컬렉션 항목이 포함될 수 있으며 항목은 Items 프로퍼티에 저장된다.
n 만약 탑 레벨의 처음 메뉴가 “File” 이라면 이것이 MenuItem 객체가 되고 Header 프로퍼티는 “File”, Items 속성 컬렉션에는 New, Open Save 등의 메뉴를 나타내는 MenuItem 객체가 들어갈 수 있다.
n ButtonBase 처럼 MenuItem도 Click, Command 이벤트가 있어 마치 버튼처럼 메뉴항목들을 다룰 수 있다. 또한 MenuItem은 체크 표시를 활성화 비활성화 할 수 있는 IsChecked 프로퍼티를 가지며 체크표시를 자동으로 토글 할 수 있는 IsCheckable 속성도 있다.
n Checked 이벤트는 IsChecked 프로퍼티가 false에서 true로 바뀔 때 발생하며 UnChecked 이벤트는 IsChecked 프로퍼티가 true에서 false로 바뀔 때 발생한다.
n 가끔 특정 메뉴항목을 비활성화 시켜야 하는 경우도 발생하는데, 현재 저장할 문서가 없다면 Save 메뉴는 비활성화 되야 할 것이다. 이를 처리하기 위해 하위 메뉴가 나타날 때 비활성화 시키면 되는데 MenuItem은 이를 위해 SubMenuOpened 이벤트를 정의하고 있으면 그안에서 비활성화 시키면 된다.
n 메뉴를 만들때는 대체로 위에서 아래로 진행하는데 아래 예문을 보자.
[MainWindow.xaml]
[MainWindow.xaml.cs]
댓글 없음:
댓글 쓰기