Example #1
0
        //public static T GetVisualChild<T>(System.Windows.Media.Visual parent)
        //    where T : System.Windows.Media.Visual
        //{
        //    T child = default(T);
        //    int numVisuals = VisualTreeHelper.GetChildrenCount(parent);
        //    for (int i = 0; i < numVisuals; i++)
        //    {
        //        Visual v = (Visual)VisualTreeHelper.GetChild(parent, i);
        //        child = v as T;
        //        if (child == null)
        //        {
        //            child = GetVisualChild<T>(v);
        //        }

        //        if (child != null)
        //        {
        //            break;
        //        }
        //    }
        //    return child;
        //}

        #endregion


        #region D:\Enpot_Project\Enpot\ENPOT.Base\SC\ENPOT.Controls\System.Winodws.Controls.Extension\DataGridExtension.cs

        /// <summary>
        /// 右键菜单
        /// </summary>
        /// <param name="datagrid"></param>
        public static void SetRightClickMenu(this System.Windows.Controls.DataGrid datagrid)
        {
            ContextMenu ctMenu    = new ContextMenu();
            var         matchIcon = new System.Windows.Media.Imaging.BitmapImage(new Uri("    ", UriKind.Relative)); // 自定义图标

            List <MenuItem> l             = new List <MenuItem>();
            MenuItem        pasteMenuItem = new MenuItem();

            pasteMenuItem.Icon             = matchIcon;
            pasteMenuItem.Header           = "区域粘贴";
            pasteMenuItem.InputGestureText = "";
            pasteMenuItem.Click           += (o, e) =>
            {
                try
                {
                    datagrid.AreaPaste();
                }
                catch (Exception ex)
                {
                    System.Windows.MessageBox.Show(ex.Message);
                }
            };

            l.Add(pasteMenuItem);

            // 分割线
            System.Windows.Controls.MenuItem lineMenuItem = new System.Windows.Controls.MenuItem();
            lineMenuItem.IsEnabled = false;
            lineMenuItem.Height    = 3;
            System.Windows.Media.Color           color           = (System.Windows.Media.Color)System.Windows.Media.ColorConverter.ConvertFromString("Black");
            System.Windows.Media.SolidColorBrush backgroundColor = new System.Windows.Media.SolidColorBrush(color);
            lineMenuItem.Background = backgroundColor;
            l.Add(lineMenuItem);

            MenuItem setTagMenuItem = new MenuItem();

            setTagMenuItem.Icon             = matchIcon;
            setTagMenuItem.Header           = "复制单元格";
            setTagMenuItem.InputGestureText = "";
            setTagMenuItem.Click           += (o, e) =>
            {
                try
                {
                    datagrid.SetTag_SourceCell();
                }
                catch (Exception ex)
                {
                    System.Windows.MessageBox.Show(ex.Message);
                }
            };

            l.Add(setTagMenuItem);

            MenuItem copyValueMenuItem = new MenuItem();

            copyValueMenuItem.Icon             = matchIcon;
            copyValueMenuItem.Header           = "粘贴单元格";
            copyValueMenuItem.InputGestureText = "";
            copyValueMenuItem.Click           += (o, e) =>
            {
                try
                {
                    datagrid.CopyValueFromSourceCell();
                }
                catch (Exception ex)
                {
                    System.Windows.MessageBox.Show(ex.Message);
                }
            };

            l.Add(copyValueMenuItem);


            ctMenu.ItemsSource   = l;
            datagrid.ContextMenu = ctMenu;
        }