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 ...
-
Để 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 ...
-
ReSharper là một công cụ Add-on cho Visual Studio, nó giúp lập trình viên tốn ít thời gian cho việc xem xét định dạng code, phong cách code,...
-
Như ở bài trước tôi đã giới thiệu về caliburn.mocro, bài tiếp theo này tôi sẽ hướng dẫn các bạn về cách tạo một project WPF hợp chuẩn mô hìn...
-
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ạ...
-
Ở phần trước tôi đã giới thiệu sơ qua cách hình thành một Modern UI căng bản cho ứng dụng WPF, bài tiếp theo này tôi sẽ hướng dẫn chi tiết ...
-
Tôi xin giới thiệu một số công cụ miển phí tôi hay dùng để thiết kế UML - tính năng khá đầy đủ và có nhiều sự lựa chọn cho mục đích thiết k...
-
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ớ...
-
Một khía cạnh hết sức quan trọng trong WPF đó là Trigger - Trigger giúp nắm bắt được mọi thay đổi trong một hệ thống GUI của WPF. Nhờ có Tr...
-
Hôm nay chúng ta sẽ tìm hiểu về XML Serialization and Deserializatio n( XS&D ) - Serialization có thể tạm dịch là " Tuần tự hóa ...

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. 여수 출장안마