1
using System;
2
using System.Windows;
3
using System.Windows.Controls;
4
using System.Windows.Input;
5
using System.Windows.Media;
6
7
namespace Petzold.CommandTheMenu
8

{
9
public class CommandTheMenu : Window
10
{
11
TextBlock text;
12
13
[STAThread]
14
public static void Main()
15
{
16
Application app = new Application();
17
app.Run(new CommandTheMenu());
18
}
19
public CommandTheMenu()
20
{
21
Title = "Command the Menu";
22
23
// Create DockPanel.
24
DockPanel dock = new DockPanel();
25
Content = dock;
26
27
// Create Menu docked at top.
28
Menu menu = new Menu();
29
dock.Children.Add(menu);
30
DockPanel.SetDock(menu, Dock.Top);
31
32
// Create TextBlock filling the rest.
33
text = new TextBlock();
34
text.Text = "Sample clipboard text";
35
text.HorizontalAlignment = HorizontalAlignment.Center;
36
text.VerticalAlignment = VerticalAlignment.Center;
37
text.FontSize = 32; // ie, 24 points
38
text.TextWrapping = TextWrapping.Wrap;
39
dock.Children.Add(text);
40
41
// Create Edit menu.
42
MenuItem itemEdit = new MenuItem();
43
itemEdit.Header = "_Edit";
44
menu.Items.Add(itemEdit);
45
46
// Create items on Edit menu.
47
MenuItem itemCut = new MenuItem();
48
itemCut.Header = "Cu_t";
49
itemCut.Command = ApplicationCommands.Cut;
50
itemEdit.Items.Add(itemCut);
51
52
MenuItem itemCopy = new MenuItem();
53
itemCopy.Header = "_Copy";
54
itemCopy.Command = ApplicationCommands.Copy;
55
itemEdit.Items.Add(itemCopy);
56
57
MenuItem itemPaste = new MenuItem();
58
itemPaste.Header = "_Paste";
59
itemPaste.Command = ApplicationCommands.Paste;
60
itemEdit.Items.Add(itemPaste);
61
62
MenuItem itemDelete = new MenuItem();
63
itemDelete.Header = "_Delete";
64
itemDelete.Command = ApplicationCommands.Delete;
65
itemEdit.Items.Add(itemDelete);
66
67
// Add command bindings to window collection.
68
CommandBindings.Add(new CommandBinding(ApplicationCommands.Cut,
69
CutOnExecute, CutCanExecute));
70
CommandBindings.Add(new CommandBinding(ApplicationCommands.Copy,
71
CopyOnExecute, CutCanExecute));
72
CommandBindings.Add(new CommandBinding(ApplicationCommands.Paste,
73
PasteOnExecute, PasteCanExecute));
74
CommandBindings.Add(new CommandBinding(ApplicationCommands.Delete,
75
DeleteOnExecute, CutCanExecute));
76
77
78
79
添加自定義鍵盤快捷鍵#region 添加自定義鍵盤快捷鍵
80
InputGestureCollection restoreGestures = new InputGestureCollection();
81
restoreGestures.Add( new KeyGesture(Key.R, ModifierKeys.Control));//CTRL + R
82
//創(chuàng)建Command,綁定快捷鍵
83
RoutedUICommand restoreUICommand = new RoutedUICommand("_Restore", "Restore", this.GetType(), restoreGestures);
84
//RoutedCommand restoreUICommand = new RoutedUICommand( "_Restore", "Restore", this.GetType(), restoreGestures );
85
//添加到當(dāng)前窗口的CommandBindings集合中
86
this.CommandBindings.Add( new CommandBinding(restoreUICommand, RestoreExecute) );
87
//添加菜單,綁定到自定義的命令中
88
MenuItem itemRestore = new MenuItem();
89
itemRestore.Command = restoreUICommand;
90
itemEdit.Items.Add(itemRestore);
91
#endregion
92
}
93
94
void RestoreExecute( object sender, ExecutedRoutedEventArgs e )
95
{
96
this.text.Text = "John";
97
}
98
99
void CutCanExecute(object sender, CanExecuteRoutedEventArgs args)
100
{
101
args.CanExecute = text.Text != null && text.Text.Length > 0;
102
}
103
void PasteCanExecute(object sender, CanExecuteRoutedEventArgs args)
104
{
105
args.CanExecute = Clipboard.ContainsText();
106
}
107
void CutOnExecute(object sender, ExecutedRoutedEventArgs args)
108
{
109
ApplicationCommands.Copy.Execute( null, this );
110
ApplicationCommands.Delete.Execute(null, this);
111
}
112
void CopyOnExecute(object sender, ExecutedRoutedEventArgs args)
113
{
114
Clipboard.SetText(text.Text);
115
}
116
void PasteOnExecute(object sender, ExecutedRoutedEventArgs args)
117
{
118
text.Text = Clipboard.GetText();
119
}
120
void DeleteOnExecute(object sender, ExecutedRoutedEventArgs args)
121
{
122
text.Text = null;
123
}
124
}
125
}
126

2

3

4

5

6

7

8



9

10



11

12

13

14

15



16

17

18

19

20



21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79


80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95



96

97

98

99

100



101

102

103

104



105

106

107

108



109

110

111

112

113



114

115

116

117



118

119

120

121



122

123

124

125

126
