Menu và MenuItem trong XAML
Tìm hiểu tổng quan nào! Menu
Control Menu được kế thừa từ lớp HeaderedItemsControl, chứa
các item theo chiều ngang và có background mặc định là màu xám. Thuộc tính để
Menu trở thành menu chính là IsMainMenu. Có một điểm khá thú vị đối với Menu,
hãy khám phá nó bằng cách mở một cửa sổ lên (ví dụ như Word) và nhấn phím F10
hoặc ALT nhé!
MenuItem
MenuItem cũng được kế thừa từ lớp HeaderedItemsControl. Thuộc
tính Header của nó dùng để biểu diễn phụ đề của Menu. Những item của MenuItem
chính là những menu con. Thuộc tính Icon góp phần diễn tả nội dung của item, được
đặt bên trái của phụ đề.
Khám phá bên trong thôi!
Khám phá 1
a. Hãy
tạo các menu còn lại (View, Window, Help).
b. Nếu
bỏ dòng tạo Menu ra (tức bỏ dòng 1 và 4 trong code trên) thì chuyện gì sẽ xảy
ra?
Sau khi debug và test chương trình, tôi tin chắc rằng các bạn
sẽ thắc mắc một vài câu hỏi, để làm sáng tỏ hãy thực hiện những yêu cầu sau để
nắm chắc kiến thức hơn nhé.
a. Hãy
thay đổi Command bằng nội dung bất kỳ (ví dụ Command = “xaml”) thì chuyện gì sẽ
xảy ra?
b. Qua
file *.xaml.cs và gõ ApplicationCommands.Cut, hãy liệt kê một vài command khác
trong lớp ApplicationCommands?
Lớp ApplicationCommands cung cấp các command có sẵn, khá
quen thuộc với chúng ta như New, Open, Cut, Copy, Paste..., khi gán Command của
MenuItem thì tên command đó phải có trong lớp dựng sẵn, khi thực thi nó sẽ tạo
nhãn dán hotkey tương ứng. Ví dụ như Cut thì là Ctrl+X. Tuy nhiên, khi chạy
code trên, chương trình không cho phép chọn MenuItem Cut. Để có thể thực thi ta
cần tạo các handle tương ứng là CanExecute và Executed. Hãy xem ví dụ dưới đây.
Lưu ý: hàm Cut_Excecuted chỉ được thực hiện khi giá trị
CanExecute = true thôi.
Code trong 2 hàm trên chỉ ở dạng đơn giản, sau này khi viết ứng
dụng nào đó, các bạn sẽ viết cụ thể hơn chắc năng của nó.
Hãy test thử khi click vào Cut và khi nhấn Ctrl+X, xem thử kết
quả nhận được có giống nhau không nhé. Và cũng đừng quên tạo các MenuItem còn lại!
Khám phá 3
Để cho phép người dùng tick vào một item nào đó, ta truy cập
đến thuộc tính IsCheckable của MenuItem và gán giá trị bằng True.
a. Hãy
thêm thuộc tính Checkable = “True” vào MenuItem New và xem kết quả.
b. Tạo các MenuItem còn
lại như hình.
0 nhận xét:
Đăng nhận xét