Right Click And Context Menu in Silverlight

I.Introdution

Trong bài này mình xin chia sẻ về cách dùng Right Click trong Silverlight.

II.Creating Project And Coding

Các bạn Mở Visual Studio 2010 lên và tạo Silverlight Application –> Đặt tên cho ứng dụng là ContextMenuSample

imageTiếp theo chúng ta tạo một giao diện đơn giản cho ứng dụng, gồm có 1 TextBox. Để khi Right Click vào TextBox sẽ hiện ra Menu.

image

Sau đây là code XAML của ứng dụng:

   1: <UserControl x:Class="ContextMenuSample.MainPage"



   2:     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"



   3:     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"



   4:     xmlns:d="http://schemas.microsoft.com/expression/blend/2008"



   5:     xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"



   6:     mc:Ignorable="d"



   7:     d:DesignHeight="300" d:DesignWidth="400">



   8:



   9:     <Grid x:Name="LayoutRoot" Background="#FFFF93FF" >



  10:         <Grid.RowDefinitions>



  11:             <RowDefinition Height="25"/>



  12:             <RowDefinition Height="*"/>



  13:         </Grid.RowDefinitions>



  14:         <TextBox Grid.Row="1" Name="textBox" VerticalAlignment="Top" Height="600"/>



  15:     </Grid>



  16: </UserControl>

Tiếp theo các bạn Add thêm thư viện Toolkit vào, chọn Add References

image

Sau khi cửa Sổ Add Reference hiện ra, các bạn vào tab .NET và add thêm thư viện vào như hình phía dưới

image

Bây giờ chúng ta tạo sự kiện Right Click cho ứng dụng, các bạn vào file MainPage.xaml.cs, sau đó tìm Contructor MainPage, và thêm sự kiện cho TextBox :

   1: public MainPage()



   2:         {



   3:             InitializeComponent();



   4:             textBox.MouseRightButtonDown += new MouseButtonEventHandler(textBox_MouseRightButtonDown);



   5:             textBox.MouseRightButtonUp += new MouseButtonEventHandler(textBox_MouseRightButtonUp);



   6:         }

Bây giờ chúng ta tiếp tục xử lý sự Kiện cho Textbox, và Add Menu kh Right Click

   1: using System;



   2: using System.Collections.Generic;



   3: using System.Linq;



   4: using System.Net;



   5: using System.Windows;



   6: using System.Windows.Controls;



   7: using System.Windows.Documents;



   8: using System.Windows.Input;



   9: using System.Windows.Media;



  10: using System.Windows.Media.Animation;



  11: using System.Windows.Shapes;



  12:



  13: namespace ContextMenuSample



  14: {



  15:     public partial class MainPage : UserControl



  16:     {



  17:         public MainPage()



  18:         {



  19:             InitializeComponent();



  20:             textBox.MouseRightButtonDown += new MouseButtonEventHandler(textBox_MouseRightButtonDown);



  21:             textBox.MouseRightButtonUp += new MouseButtonEventHandler(textBox_MouseRightButtonUp);



  22:         }



  23:         void textBox_MouseRightButtonUp(object sender, MouseButtonEventArgs e)



  24:         {



  25:             cMenu = new ContextMenu();



  26:             // Add MenuItem tên Grow Font



  27:             menuItem = new MenuItem();



  28:             menuItem.Header = "Grow Font";



  29:             cMenu.Items.Add(menuItem);



  30:             menuItem.Click += new RoutedEventHandler(menuItem_Click);



  31:             // Add MenuItem tên Shrink Font



  32:             menuItem = new MenuItem();



  33:             menuItem.Header = "Shrink Font";



  34:             menuItem.Click += new RoutedEventHandler(menuItem_Click);



  35:             cMenu.Items.Add(menuItem);



  36:             // Open Menu



  37:             cMenu.IsOpen = true;



  38:             // Xác định vị trí tại điểm Right Click trên Layout



  39:             cMenu.HorizontalOffset = e.GetPosition(LayoutRoot).X;



  40:             cMenu.VerticalOffset = e.GetPosition(LayoutRoot).Y;



  41:         }



  42:         /// <summary>



  43:         /// Xử Lý Sự Kiện khi Click vào Menuitem



  44:         /// </summary>



  45:         /// <param name="sender"></param>



  46:         /// <param name="e"></param>



  47:         void menuItem_Click(object sender, RoutedEventArgs e)



  48:         {



  49:             MenuItem item = sender as MenuItem;



  50:             switch(item.Header.ToString())



  51:             {



  52:                 case "Grow Font":



  53:                     textBox.FontSize += 1;



  54:                     break;



  55:                 case "Shrink Font":



  56:                     textBox.FontSize -= 1;



  57:                     break;



  58:                 default: break;



  59:             }



  60:             cMenu.IsOpen = false;



  61:         }



  62:



  63:         void textBox_MouseRightButtonDown(object sender, MouseButtonEventArgs e)



  64:         {



  65:             e.Handled = true;



  66:         }



  67:



  68:         public ContextMenu cMenu { get; set; }



  69:



  70:         public MenuItem menuItem { get; set; }



  71:     }



  72: }

Run Application và xem kết quả:

image

Khi Right Click thì Menu lập tức hiện ra, và khi bạn chọn Grow Font thì chữ trên TextBox sẽ to hơnimage

Ngược lại khi bạn chọn Shrink Font thì chữ sẽ nhỏ lại

image

Source Code Here

Leave a comment