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
Tiế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.
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
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
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ả:
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ơn![]()
Ngược lại khi bạn chọn Shrink Font thì chữ sẽ nhỏ lại