Tìm hiểu về sử dụng ContextMenu bằng code C# trong Windows Phone

I.Introduction

– ContextMenu là một Control khá là quen thuộc trong Windows Phone, được sử dụng rất nhiều trong các trường hợp chọn giữ  một Item trên Listbox và hiện ContextMenu ra.

– Trong thực tế để định nghĩa ContextMenu người ta có thể dể dàng định nghĩa trong code xaml rồi gọi ra hoặc là có thể định nghĩa trực tiếp từ code C#

– Trong bài này mình xin chia sẻ cách dùng ContextMenu trong Windows Phone

II.Fundamental

– Trước tiên chúng ta tạo Windows Phone App Project.

– Để sử dụng ContextMenu chúng ta phải cài bộ Windows Phone Toolkit. Nếu bạn nào chưa cài thì dùng Nuget để cài nhé.

– Nếu dùng Nuget cài thì thư viện sẽ được add trực tiếp vào Project mà chúng ta không cần phải Add Refercences nữa.

– Sau khi cày xong các bạn có thể tùy úy thiết kế giao diện cho nhé, mình sẽ làm đơn giản nhất là khi click vào một Button. Nếu bạn nào muốn xử lý khi giữ vào một Item trên Listbox thì có thể tham khảo ở đây trước nhé :

http://phamnguyen.info/select-m%E1%BB%99t-listbox-item-trong-s%E1%BB%B1-ki%E1%BB%87n-hold-trong-windows-phone/

– Sau khi các bạn đã thiết kế giao diện xong, tạo sự kiện xong thì bây giờ chỉ cần vào sự kiện đó và định nghĩa ContextMenu

// Sự kiện Click của Button để gọi ContextMenu

private void btnOption_Click(object sender, RoutedEventArgs e)

{

    ContextMenu menu = new ContextMenu();

    MenuItem deleteMenuItem = new MenuItem();

    // Chỉ định sự kiện Click cho MenuItem 

    deleteMenuItem.Click += deleteMenuItem_Click;

    deleteMenuItem.Header = "Xóa";

 

    menu.Items.Add(deleteMenuItem);

 

    MenuItem hideDiaryMenuItem = new MenuItem();

    hideDiaryMenuItem.Click += hideDiaryMenuItem_Click;

    hideDiaryMenuItem.Header = "Ẩn nhật ký từ người này";

    menu.Items.Add(hideDiaryMenuItem);

 

    MenuItem reportMenuItem = new MenuItem();

    reportMenuItem.Header = "Báo xấu";

    reportMenuItem.Click += reportMenuItem_Click;

    menu.Items.Add(reportMenuItem);

 

    foreach (MenuItem menuItem in menu.Items)

    {

        menuItem.Foreground = new SolidColorBrush(Colors.White);

    }

    menu.Background = new SolidColorBrush(Colors.Black);

 

    ContextMenuService.SetContextMenu((RadImageButton)sender,menu);

 

    menu.IsOpen = true;

}

 

// Các sự kiện Click của MenuItem

 

void reportMenuItem_Click(object sender, RoutedEventArgs e)

{

 

}

 

void hideDiaryMenuItem_Click(object sender, RoutedEventArgs e)

{

}

 

void deleteMenuItem_Click(object sender, RoutedEventArgs e)

{

 

}

Lưu ý

1. Thuộc tính IsOpen giúp hiển thị ContextMenu, khi gán giá trị là true thì sẽ hiển thị.

2. Phương thức static ContextMenuService.SetContextMenu() dùng để xác định ContextMenu sẽ hiển thị ở vị trí Control nào. trong trường hợp ví dụ trên mình chỉ định vị trí của nó là ngay Button gọi nó

Bây giờ là kết quả Nụ cười

1

Hy vọng bài viết này sẽ hữu ích với các bạn !

Leave a comment