Blog chia sẽ kinh nghiệm lập trình và Technical VN. Nơi mà các bạn có thể học tập và tham khảo về những công nghệ mới nhất hiện nay về .NET
Chủ Nhật, 10 tháng 5, 2015
On 06:06 by Tuan Pham 1 comment
Hôm nay chúng ta sẽ tìm hiểu cách tạo ra các menu chuột phải trên ứng dụng WPF của mình. Ở bài này chúng ta xoay quanh việc tìm hiểu cách tạo ra một ContextMenu - Menu ngữ cảnh và ở bài sau tôi sẽ chỉ cách Custom ContextMenu cho đẹp hơn.
I> ContextMenu là gì?
ContextMenu là các menu ngữ cảnh, tức menu sẽ show cho chúng ta một số hành động mà chúng ta có thể thực thi trong bối cảnh nhất định nào đó. Thông thường, một người sử dụng cho hiển thị nhiều ContextMenu trong giao diện người dùng (UI) bằng cách nhấn phải chuột.
Một ContextMenu được đính kèm với một điều khiển cụ thể(Vùng, đối tượng). Các ContextMenu cho phép bạn trình bày cho người dùng một danh sách các mục/lệnh hoặc tùy chọn có liên quan với một control/panel cụ thể, ví dụ, một Button,Grid ... Người dùng phải click vào control/panel đó để làm cho menu xuất hiện. Điển hình, nhấp chuột vào một MenuItem sẽ mở ra một menu con hoặc thực hiện một lệnh nào đó.
II> Cách tạo ContextMenu
Hầu hết các Control trong WPF đều có thể chứa một ContextMenu, và tôi sẽ tạo ContextMenu cho một Button như sau bằng code XAMLHoặc chúng ta có thể tạo với code C# như sau
btn = new Button();
btn.Content = "Created with C#";
contextmenu = new ContextMenu();
btn.ContextMenu = contextmenu;
mi = new MenuItem();
mi.Header = "File";
mia = new MenuItem();
mia.Header = "New";
mi.Items.Add(mia);
mib = new MenuItem();
mib.Header = "Open";
mi.Items.Add(mib);
mib1 = new MenuItem();
mib1.Header = "Recently Opened";
mib.Items.Add(mib1);
mib1a = new MenuItem();
mib1a.Header = "Text.xaml";
mib1.Items.Add(mib1a);
contextmenu.Items.Add(mi);
cv2.Children.Add(btn);
Kết quả khi Right_Click vào Button

Ngoài ra bạn cũng có thể lấy các mục menu từ các nguồn khác nhau để show tại một bối cảnh cụ thể nào đó bằng cách Merge ContextMenus - CompositeCollection
Chúng ta sẽ thực hiện Handel Event cho việc Click vào MenuItem như sau
Để đẹp hơn chúng ta có thể Apply style cho các MenuItem, tôi tạo Style như sao
Lưu ý rằng để Apply style này cho đối tượng MenuItem thì tôi cần Set giá trị Style của mỗi MenuItem như sau Style="{StaticResource SimpleSysResources}". Nhưng chúng ta làm cho 12 Item thì thật mất công, vì vậy với một Control mà nó có thể chứa nhiều Item như Menu/ListBox thì chúng ta chỉ cần khai báo ở control cha(Menu/ListBox...) mà thôi. Thường chúng ta sẽ làm thế này
Đơn giản hơn chúng ta chỉ cần sử dụng property ItemContainerStyle=""
Kết quả
Chúc các bạn thành công. SourceCode
Phạm Tuân
Phạm Tuân
Đăng ký:
Đăng Nhận xét (Atom)
Search
Popular Posts
-
Phong cách thiết kế Material Design nhắm đến những đường nét đơn giản, sử dụng nhiều mảng màu đậm nổi bật, các đối tượng đồ họa trong giao ...
-
Hôm nay tôi sẽ giới thiệu với các bạn một Framework đến từ Microsoft - framework này không quá lớn nhưng là khá mạnh khi các bạn làm việc vớ...
-
WPF vượt trội hơn Winform về khoản Drawing , trong đó đặc biệt WPF hỗ trợ đồ họa rất tốt vì nó tương tác trực tiếp đến GPU. Hôm nay chúng t...
-
Hôm nay chúng ta sẽ tìm hiểu cách tạo ra các menu chuột phải trên ứng dụng WPF của mình. Ở bài này chúng ta xoay quanh việc tìm hiểu cách tạ...
-
Để dễ hiểu, các bạn hãy hình dung rằng: cùng một tập tin thực thi *.EXE nhưng bạn DoubleClick 10 lần cách quãng vào nó thì chuyện gì sẽ sảy ...
-
Trong bài viết trước tôi có giới thiệu về Extension Methods trong nguôn ngữ lập trình C#; hôm nay tôi sẽ nói về một vấn đề có ý nghĩa tương...
-
Hôm nay chúng ta sẽ thử đo xem thời gian query Data của "Foreach vs LinQ vs LinQasParallel" như thế nào. Tôi tạo một tool nhỏ để l...
-
Data Binding là kĩ thuật dùng để tạo gắn kết giữa phần giao diện ( UI ) và dữ liệu thông qua phần business logic hoặc giữa các đối tượng UI...
-
LOG4NET là một thư viện mã nguồn mở cho phép chúng ta tạo ra một hoặc nhiều tập tin log, kiểu log cũng như nội dung log một cách linh hoạt v...
-
Sau hai bài giới thiệu về Caliburn.Micro framework, hôm nay chúng ta sẽ cùng bắt tay vào làm một dự án nhỏ - HelloWorld. Step 1: Add referen...

Bally's - Casino at Kansas Speedway - Jtm Hub
Trả lờiXóaDiscover and bet on all the 공주 출장안마 action at 경기도 출장안마 Bally's! Sign up to start your journey and take 군산 출장마사지 in 충주 출장안마 the most thrilling entertainment in Kansas Speedway. 여수 출장안마