silverlight中添加给TextBox批量添加右键菜单

基于写的代码,修改优化后支持批量给所有TextBox添加右键菜单,,而菜单共用一个,节省资源。

public static class CreatMenuForTextBox{// 菜单static ContextMenu menu;//TextBoxstatic TextBox textbox;/// <summary>/// 为任意元素的内部TextBox添加右键菜单/// </summary>public static void creatMenu(DependencyObject obj){menu = new ContextMenu();menu.Items.Add(getItem("剪切", "../Images/1.jpg"));menu.Items.Add(getItem("复制", null));menu.Items.Add(getItem("粘贴", null));menu.Items.Add(new Separator());menu.Items.Add(getItem("选择全部", null));menu.Opened += menu_Opened;SetMenu(obj);}static void SetMenu(DependencyObject obj){var count = VisualTreeHelper.GetChildrenCount(obj);for (int i = 0; i < count; i++){var child = VisualTreeHelper.GetChild(obj, i);if (child is TextBox){((TextBox)child).MouseRightButtonDown += TextBox_MouseRightButtonDown;}else{SetMenu(child);}}}static void TextBox_MouseRightButtonDown(object sender, MouseButtonEventArgs e){e.Handled = true;textbox = sender as TextBox;textbox.Focus();menu.IsOpen = true;}static void menu_Opened(object sender, RoutedEventArgs e){textbox.Focus();}static MenuItem getItem(string header, string imagePath){MenuItem item = new MenuItem();item.Header = header;if (imagePath != null){Image im = new Image();im.Source = new ImageSourceConverter().ConvertFromString(imagePath) as ImageSource;item.Icon = im;}item.Click += new RoutedEventHandler(item_Click);return item;}static void item_Click(object sender, RoutedEventArgs e){MenuItem menuItem = (MenuItem)sender;try{execute(menuItem.Header.ToString());}catch (Exception){}textbox.Focus();}static void execute(string selected){switch (selected){case "剪切":Clipboard.SetText(textbox.SelectedText);textbox.SelectedText = "";textbox.GetBindingExpression(TextBox.TextProperty).UpdateSource();break;case "复制":Clipboard.SetText(textbox.SelectedText);break;case "粘贴":textbox.SelectedText = Clipboard.GetText();textbox.GetBindingExpression(TextBox.TextProperty).UpdateSource();break;case "选择全部":textbox.SelectAll();break;default:break;}}}2013-11-20修改:添加了剪切和粘贴动作对绑定数据源的更新。

辽远或偏僻的地方,而会常常想起这一次的旅行,想起那座山,那个城,那些人……

silverlight中添加给TextBox批量添加右键菜单

相关文章:

你感兴趣的文章:

标签云: