Exemple #1
0
        private void EditTournament(object sender, RadRoutedEventArgs e)
        {
            var item = tournamentsGridContextMenu.GetClickedElement <GridViewRow>();

            if (item != null)
            {
                reportGadgetViewModel.EditTournamentCommand.Execute(item.DataContext);
            }
        }
Exemple #2
0
        private void MakeNote(object sender, RadRoutedEventArgs e)
        {
            var item = handsGridContextMenu.GetClickedElement <GridViewRow>();

            if (item != null)
            {
                reportGadgetViewModel.MakeNoteCommand.Execute(item.DataContext);
            }
        }
Exemple #3
0
        private void RadContextMenu_ItemClick(object sender, RadRoutedEventArgs e)
        {
            RadContextMenu menu           = (RadContextMenu)sender;
            RadMenuItem    clickedItem    = e.OriginalSource as RadMenuItem;
            GridViewRow    row            = menu.GetClickedElement <GridViewRow>();
            GroupHeaderRow groupHeaderRow = menu.GetClickedElement <GroupHeaderRow>();

            if (clickedItem != null && row != null)
            {
                string header = Convert.ToString(clickedItem.Header);

                switch (header)
                {
                case "Add":
                    gridView.BeginInsert();
                    break;

                case "Edit":
                    gridView.BeginEdit();
                    break;

                case "Delete":
                    gridView.Items.Remove(row.DataContext);
                    break;

                default:
                    break;
                }
            }
            else if (clickedItem != null && groupHeaderRow != null)
            {
                string header = Convert.ToString(clickedItem.Header);

                switch (header)
                {
                case "Delete":
                    var group = groupHeaderRow.DataContext as QueryableCollectionViewGroup;
                    var items = group.Items.ToList();
                    foreach (var item in items)
                    {
                        gridView.Items.Remove(item);
                    }
                    break;

                default:
                    break;
                }
            }
        }
Exemple #4
0
        private void GridContextMenu_ItemClick(object sender, Telerik.Windows.RadRoutedEventArgs e)
        {
            RadContextMenu menu        = (RadContextMenu)sender;
            RadMenuItem    clickedItem = e.OriginalSource as RadMenuItem;
            GridViewRow    row         = menu.GetClickedElement <GridViewRow>();

            if (clickedItem != null && row != null)
            {
                string header = Convert.ToString(clickedItem.Header);

                switch (header)
                {
                case "Add":

                    break;

                case "Edit":
                    HSQuotationHistory lQuotation = row.Item as HSQuotationHistory;

                    if (selectedQuotationHistoryCommand != null)
                    {
                        selectedQuotationHistoryCommand(lQuotation.SalesId);
                    }

                    break;

                case "Delete":

                    break;

                default:
                    break;
                }
            }
        }
Exemple #5
0
        void OnMenuOpened(object sender, RoutedEventArgs e)
        {
            RadContextMenu     menu = (RadContextMenu)sender;
            GridViewHeaderCell cell = menu.GetClickedElement <GridViewHeaderCell>();

            if (cell != null)
            {
                menu.Items.Clear();

                RadMenuItem item = new RadMenuItem();
                item.Header = String.Format(@"Sort Ascending by ""{0}""", cell.Column.Header);
                menu.Items.Add(item);

                item        = new RadMenuItem();
                item.Header = String.Format(@"Sort Descending by ""{0}""", cell.Column.Header);
                menu.Items.Add(item);

                item        = new RadMenuItem();
                item.Header = String.Format(@"Clear Sorting by ""{0}""", cell.Column.Header);
                menu.Items.Add(item);

                item        = new RadMenuItem();
                item.Header = String.Format(@"Group by ""{0}""", cell.Column.Header);
                menu.Items.Add(item);

                item        = new RadMenuItem();
                item.Header = String.Format(@"Ungroup ""{0}""", cell.Column.Header);
                menu.Items.Add(item);

                item        = new RadMenuItem();
                item.Header = "Choose Columns:";
                menu.Items.Add(item);

                // create menu items
                foreach (GridViewColumn column in grid.Columns)
                {
                    RadMenuItem subMenu = new RadMenuItem();
                    subMenu.Header      = column.Header;
                    subMenu.IsCheckable = true;
                    subMenu.IsChecked   = true;

                    Binding isCheckedBinding = new Binding("IsVisible");
                    isCheckedBinding.Mode   = BindingMode.TwoWay;
                    isCheckedBinding.Source = column;

                    // bind IsChecked menu item property to IsVisible column property
                    subMenu.SetBinding(RadMenuItem.IsCheckedProperty, isCheckedBinding);

                    item.Items.Add(subMenu);
                }
            }
            else
            {
                menu.IsOpen = false;
            }
        }
        void OnMenuItemClick(object sender, RoutedEventArgs e)
        {
            RadContextMenu menu = (RadContextMenu)sender;

            GridViewHeaderCell cell        = menu.GetClickedElement <GridViewHeaderCell>();
            RadMenuItem        clickedItem = ((RadRoutedEventArgs)e).OriginalSource as RadMenuItem;
            GridViewColumn     column      = cell.Column;

            if (clickedItem.Parent is RadMenuItem)
            {
                return;
            }

            string header = Convert.ToString(clickedItem.Tag);

            using (grid.DeferRefresh())
            {
                ColumnSortDescriptor sd = (from d in grid.SortDescriptors.OfType <ColumnSortDescriptor>()
                                           where d.Column == column
                                           select d).FirstOrDefault();

                if (header.Contains("Ascending"))
                {
                    if (sd != null)
                    {
                        grid.SortDescriptors.Remove(sd);
                    }

                    ColumnSortDescriptor newDescriptor = new ColumnSortDescriptor();
                    newDescriptor.Column        = column;
                    newDescriptor.SortDirection = ListSortDirection.Ascending;

                    grid.SortDescriptors.Add(newDescriptor);
                }
                else if (header.Contains("Descending"))
                {
                    if (sd != null)
                    {
                        grid.SortDescriptors.Remove(sd);
                    }

                    ColumnSortDescriptor newDescriptor = new ColumnSortDescriptor();
                    newDescriptor.Column        = column;
                    newDescriptor.SortDirection = ListSortDirection.Descending;

                    grid.SortDescriptors.Add(newDescriptor);
                }
                else if (header.Contains("Clear"))
                {
                    if (sd != null)
                    {
                        grid.SortDescriptors.Remove(sd);
                    }
                }
            }
        }
Exemple #7
0
        private void RadContextMenu_Opened(object sender, RoutedEventArgs e)
        {
            RadContextMenu menu = (RadContextMenu)sender;
            GridViewRow    row  = menu.GetClickedElement <GridViewRow>();

            if (row != null)
            {
                row.IsSelected = row.IsCurrent = true;
                GridViewCell cell = menu.GetClickedElement <GridViewCell>();
                if (cell != null)
                {
                    cell.IsCurrent = true;
                }
            }
            else
            {
                menu.IsOpen = false;
            }
        }
Exemple #8
0
        private void RadContextMenu_Opened(object sender, RoutedEventArgs e)
        {
            RadContextMenu menu           = (RadContextMenu)sender;
            GridViewRow    row            = menu.GetClickedElement <GridViewRow>();
            GroupHeaderRow groupHeaderRow = menu.GetClickedElement <GroupHeaderRow>();


            if (row != null && !row.IsInEditMode)
            {
                menu.Items.Clear();

                RadMenuItem item = new RadMenuItem();
                item.Header = "Add";
                menu.Items.Add(item);

                item        = new RadMenuItem();
                item.Header = "Edit";
                menu.Items.Add(item);

                item        = new RadMenuItem();
                item.Header = "Delete";
                menu.Items.Add(item);

                row.IsSelected = row.IsCurrent = true;
                GridViewCell cell = menu.GetClickedElement <GridViewCell>();
                if (cell != null)
                {
                    cell.IsCurrent = true;
                }
            }
            else if (groupHeaderRow != null)
            {
                menu.Items.Clear();

                RadMenuItem item = new RadMenuItem();
                item.Header = "Delete";
                menu.Items.Add(item);
            }
            else
            {
                menu.IsOpen = false;
            }
        }
Exemple #9
0
        /******************
         *  ContextMenu
         *******************/
        private void RadContextMenu_OpenedGeneral(object sender, RoutedEventArgs e)
        {
            RadContextMenu menu = (RadContextMenu)sender;

            try
            {
                GridViewCell cell = menu.GetClickedElement <GridViewCell>();
                if (cell != null)
                {
                    System.Data.DataRow row = cell.ParentRow.DataContext as System.Data.DataRow;
                    this.SectorsRadGridView.SelectedItems.Clear();
                    this.SectorsRadGridView.SelectedItem = row;
                }
            }
            catch
            { }
        }
        private void GridContextMenu_ItemClick(object sender, Telerik.Windows.RadRoutedEventArgs e)
        {
            RadContextMenu menu        = (RadContextMenu)sender;
            RadMenuItem    clickedItem = e.OriginalSource as RadMenuItem;
            GridViewRow    row         = menu.GetClickedElement <GridViewRow>();

            if (clickedItem != null && row != null)
            {
                string header = Convert.ToString(clickedItem.Header);

                switch (header)
                {
                case "Add":

                    break;

                case "Edit":

                    DataSource.Invoice lSelectedInvoice = row.Item as DataSource.Invoice;

                    if (lSelectedInvoice != null)
                    {
                        DataSource.Order lOrder = lDataContext.Orders.SingleOrDefault(p => p.InvoiceId == lSelectedInvoice.Id);

                        if (lOrder == null)
                        {
                            MessageBox.Show("Failed to find Order Id [" + lSelectedInvoice.Id + "]");
                            return;
                        }

                        scannedOrderCommand?.Invoke(lOrder.Id);
                    }

                    break;

                case "Delete":

                    break;

                default:
                    break;
                }
            }
        }
Exemple #11
0
        /// <summary>
        /// The OnMenuItemClick.
        /// </summary>
        /// <param name="sender">The sender<see cref="object"/>.</param>
        /// <param name="e">The e<see cref="RoutedEventArgs"/>.</param>
        public void OnMenuItemClick(object sender, RoutedEventArgs e)
        {
            RadContextMenu menu = (RadContextMenu)sender;

            GridViewHeaderCell cell   = menu.GetClickedElement <GridViewHeaderCell>();
            GridViewColumn     column = cell.Column;

            string header = string.Empty;

            if (((RadRoutedEventArgs)e).OriginalSource is RadMenuItem clickedItem)
            {
                if (clickedItem?.Parent is RadMenuItem)
                {
                    return;
                }
                else
                {
                    header = (string)clickedItem !.Header ?? string.Empty;
                }
            }

            using (_grid.DeferRefresh())
            {
                ColumnSortDescriptor sd = (from d in _grid.SortDescriptors.OfType <ColumnSortDescriptor>()
                                           where object.Equals(d.Column, column)
                                           select d).FirstOrDefault();

                if (header !.Contains("Sort Ascending"))
                {
                    if (sd != null)
                    {
                        _grid.SortDescriptors.Remove(sd);
                    }

                    ColumnSortDescriptor newDescriptor = new ColumnSortDescriptor
                    {
                        Column        = column,
                        SortDirection = ListSortDirection.Ascending,
                    };

                    _grid.SortDescriptors.Add(newDescriptor);
                }
        private void GridContextMenu_ItemClick(object sender, Telerik.Windows.RadRoutedEventArgs e)
        {
            RadContextMenu menu        = (RadContextMenu)sender;
            RadMenuItem    clickedItem = e.OriginalSource as RadMenuItem;
            GridViewRow    row         = menu.GetClickedElement <GridViewRow>();

            if (clickedItem != null && row != null)
            {
                string header = Convert.ToString(clickedItem.Header);

                switch (header)
                {
                case "Add":

                    break;

                case "Edit":
                    HSOrderHistory lOrderHistory = row.Item as HSOrderHistory;

                    if (selectedOrderHistoryCommand != null)
                    {
                        selectedOrderHistoryCommand(lOrderHistory.OrderId);
                        PageST = this.dtPickerST.SelectedValue;
                        PageET = this.dtPickerET.SelectedValue;
                    }

                    break;

                case "Delete":

                    break;

                default:
                    break;
                }
            }
        }
        /// <summary>
        /// Method to catch click event to open context menu
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void RadContextMenu_Opened(object sender, RoutedEventArgs e)
        {
            if (sender == null || e == null)
            {
                return;
            }
            RadContextMenu menu = (RadContextMenu)sender;

            if (menu == null)
            {
                return;
            }
            GridViewRow       row       = menu.GetClickedElement <GridViewRow>();
            GridViewGroupRow  groupRow  = menu.GetClickedElement <GridViewGroupRow>();
            GridViewHeaderRow headerRow = menu.GetClickedElement <GridViewHeaderRow>();

            if (row != null)
            {
                row.IsSelected = row.IsCurrent = true;
                (menu.Items[0] as RadMenuItem).IsEnabled = true;
                (menu.Items[1] as RadMenuItem).IsEnabled = true;
                (menu.Items[2] as RadMenuItem).IsEnabled = true;
                (menu.Items[3] as RadMenuItem).IsEnabled = true;
                return;
            }

            if (groupRow != null)
            {
                (menu.Items[0] as RadMenuItem).IsEnabled = true;
                (menu.Items[1] as RadMenuItem).IsEnabled = true;
                (menu.Items[2] as RadMenuItem).IsEnabled = true;
                (menu.Items[3] as RadMenuItem).IsEnabled = false;
                if (!(groupRow.Group.Key is string))
                {
                    return;
                }

                string groupName = groupRow.Group.Key as string;
                int    itemCount = 0;
                foreach (MarketSnapshotPerformanceData item in this.radGridSnapshot.Items)
                {
                    if (item.MarketSnapshotPreferenceInfo.GroupName == groupName &&
                        item.MarketSnapshotPreferenceInfo.EntityOrder == 1)
                    {
                        this.radGridSnapshot.SelectedItem = item;
                        return;
                    }
                    itemCount++;
                }
                return;
            }
            if (headerRow != null)
            {
                (menu.Items[0] as RadMenuItem).IsEnabled = true;
                (menu.Items[1] as RadMenuItem).IsEnabled = false;
                (menu.Items[2] as RadMenuItem).IsEnabled = false;
                (menu.Items[3] as RadMenuItem).IsEnabled = false;
                return;
            }
            menu.IsOpen = false;
        }
Exemple #14
0
        private void RadContextMenu_ItemClick(object sender, RadRoutedEventArgs e)
        {
            RadContextMenu menu        = (RadContextMenu)sender;
            RadMenuItem    clickedItem = e.OriginalSource as RadMenuItem;
            GridViewRow    row         = menu.GetClickedElement <GridViewRow>();

            if (clickedItem != null && row != null)
            {
                string header = Convert.ToString(clickedItem.Header);

                switch (header)
                {
                case "新建":

                    break;

                case "编辑":

                    break;

                case "删除":
                    DirectoryInfoModel directoryInfoModel = row.DataContext as DirectoryInfoModel;
                    gridView.Items.Remove(row.DataContext);
                    if (File.Exists(directoryInfoModel.FullName))
                    {
                        try
                        {
                            File.Delete(directoryInfoModel.FullName);
                            Application.Current.Dispatcher.BeginInvoke(new Action(() => {
                                RadWindow.Alert(new DialogParameters
                                {
                                    Content = "删除成功!",
                                    DefaultPromptResultValue = directoryInfoModel.Name,
                                    Theme           = new Windows8Theme(),
                                    Header          = "提示",
                                    TopOffset       = 30,
                                    OkButtonContent = "关闭",
                                });
                            }));
                        }
                        catch (Exception ex)
                        {
                            LogHelper.ErrorLog(ex, "删除文件");
                            Application.Current.Dispatcher.BeginInvoke(new Action(() => {
                                RadWindow.Alert(new DialogParameters
                                {
                                    Content = "删除失败!",
                                    DefaultPromptResultValue = directoryInfoModel.Name,
                                    Theme           = new Windows8Theme(),
                                    Header          = "提示",
                                    TopOffset       = 30,
                                    OkButtonContent = "关闭",
                                });
                            }));
                        }
                    }
                    break;

                default:
                    break;
                }
            }
        }
Exemple #15
0
        private void InitContextMenu()
        {
            handsGridContextMenu       = new RadContextMenu();
            tournamentsGridContextMenu = new RadContextMenu();
            reportsGridContextMenu     = new RadContextMenu();

            /* Calculate equity item */
            RadMenuItem calculateEquityItem = CreateRadMenuItem(CommonResourceManager.Instance.GetResourceString(ResourceStrings.CalculateEquityResourceString), false,
                                                                EquityCalcMenuItem_Click);

            Binding equityEnabledBinding = new Binding(nameof(ReportGadgetViewModel.IsEquityCalculatorEnabled))
            {
                Source = this.reportGadgetViewModel
            };

            calculateEquityItem.SetBinding(RadMenuItem.IsEnabledProperty, equityEnabledBinding);

            handsGridContextMenu.Opening += (s, e) =>
            {
                var item = handsGridContextMenu.GetClickedElement <GridViewRow>();

                if (item != null && item.DataContext != null &&
                    item.DataContext is ReportHandViewModel hand &&
                    (GameTypeUtils.CompareGameType((GameType)hand.PokerGameTypeId, GameType.NoLimitOmaha) ||
                     GameTypeUtils.CompareGameType((GameType)hand.PokerGameTypeId, GameType.NoLimitOmahaHiLo)))
                {
                    calculateEquityItem.Visibility = Visibility.Collapsed;
                    return;
                }

                calculateEquityItem.Visibility = Visibility.Visible;
            };

            /* Export items */
            RadMenuItem exportHandItem     = CreateRadMenuItem(CommonResourceManager.Instance.GetResourceString(ResourceStrings.ExportHandResourceString), false, null);
            RadMenuItem twoPlustTwoItem    = CreateRadMenuItem(CommonResourceManager.Instance.GetResourceString(ResourceStrings.TwoPlustTwoResourceString), false, GeneralExportItem_Click, EnumExportType.TwoPlusTwo);
            RadMenuItem cardsChatItem      = CreateRadMenuItem(CommonResourceManager.Instance.GetResourceString(ResourceStrings.CardsChatResourceString), false, GeneralExportItem_Click, EnumExportType.CardsChat);
            RadMenuItem pokerStrategyItem  = CreateRadMenuItem(CommonResourceManager.Instance.GetResourceString(ResourceStrings.PokerStrategyString), false, GeneralExportItem_Click, EnumExportType.PokerStrategy);
            RadMenuItem icmizerHistoryItem = CreateRadMenuItem(CommonResourceManager.Instance.GetResourceString(ResourceStrings.ICMizerHandHistory), false,
                                                               RawExportItem_Click, extraAction: item =>
            {
                var binding = new Binding(nameof(ReportGadgetViewModel.IsShowTournamentData))
                {
                    Source    = reportGadgetViewModel,
                    Converter = new BoolToVisibilityConverter()
                };

                item.SetBinding(VisibilityProperty, binding);
            });

            RadMenuItem exportTo3rdPartyItem = CreateRadMenuItem(CommonResourceManager.Instance.GetResourceString(ResourceStrings.ExportGridHandsResourceString), false, null,
                                                                 command: nameof(ReportGadgetViewModel.ExportSelectedHandsTo3rdPartyCommand));

            RadMenuItem rawHistoryItem           = CreateRadMenuItem(CommonResourceManager.Instance.GetResourceString(ResourceStrings.RawHandHistoryString), false, RawExportItem_Click);
            RadMenuItem plainTextHandHistoryItem = CreateRadMenuItem(CommonResourceManager.Instance.GetResourceString(ResourceStrings.PlainTextHandHistoryString), false, PlainExportItem_Click);


            exportHandItem.Items.Add(twoPlustTwoItem);
            exportHandItem.Items.Add(cardsChatItem);
            exportHandItem.Items.Add(pokerStrategyItem);
            exportHandItem.Items.Add(icmizerHistoryItem);
            exportHandItem.Items.Add(rawHistoryItem);
            exportHandItem.Items.Add(plainTextHandHistoryItem);
            exportHandItem.Items.Add(exportTo3rdPartyItem);

            /* Replay hand */
            RadMenuItem replayHand = CreateRadMenuItem(CommonResourceManager.Instance.GetResourceString(ResourceStrings.ReplayHandResourceString), false, ReplayHand);
            /* Tag Hand */
            RadMenuItem tagHandItem   = CreateRadMenuItem(CommonResourceManager.Instance.GetResourceString(ResourceStrings.TagHand), false, null);
            RadMenuItem forReviewItem = CreateRadMenuItem(CommonResourceManager.Instance.GetResourceString(ResourceStrings.HandTagForReview), false, TagHand, EnumHandTag.ForReview);
            RadMenuItem bluffItem     = CreateRadMenuItem(CommonResourceManager.Instance.GetResourceString(ResourceStrings.HandTagBluff), false, TagHand, EnumHandTag.Bluff);
            RadMenuItem heroCallitem  = CreateRadMenuItem(CommonResourceManager.Instance.GetResourceString(ResourceStrings.HandTagHeroCall), false, TagHand, EnumHandTag.HeroCall);
            RadMenuItem bigFold       = CreateRadMenuItem(CommonResourceManager.Instance.GetResourceString(ResourceStrings.HandTagBigFold), false, TagHand, EnumHandTag.BigFold);
            RadMenuItem removeTag     = CreateRadMenuItem(CommonResourceManager.Instance.GetResourceString(ResourceStrings.HandTagNone), false, TagHand, EnumHandTag.None);

            tagHandItem.Items.Add(forReviewItem);
            tagHandItem.Items.Add(bluffItem);
            tagHandItem.Items.Add(heroCallitem);
            tagHandItem.Items.Add(bigFold);
            tagHandItem.Items.Add(removeTag);

            var makeNoteItem         = CreateRadMenuItem(CommonResourceManager.Instance.GetResourceString(ResourceStrings.MakeNote), false, MakeNote);
            var editTournamentItem   = CreateRadMenuItem(CommonResourceManager.Instance.GetResourceString(ResourceStrings.EditTournamentResourceString), false, EditTournament);
            var deleteHandItem       = CreateRadMenuItem(CommonResourceManager.Instance.GetResourceString(ResourceStrings.DeleteHandResourceString), false, null, command: nameof(ReportGadgetViewModel.DeleteHandCommand));
            var deleteTournamentItem = CreateRadMenuItem(CommonResourceManager.Instance.GetResourceString(ResourceStrings.DeleteTournamentResourceString), false, DeleteTournament);

            handsGridContextMenu.Items.Add(calculateEquityItem);
            handsGridContextMenu.Items.Add(exportHandItem);
            handsGridContextMenu.Items.Add(replayHand);
            handsGridContextMenu.Items.Add(tagHandItem);
            handsGridContextMenu.Items.Add(makeNoteItem);
            handsGridContextMenu.Items.Add(deleteHandItem);

            tournamentsGridContextMenu.Items.Add(editTournamentItem);
            tournamentsGridContextMenu.Items.Add(deleteTournamentItem);
            tournamentsGridContextMenu.Items.Add(CreateRadMenuItem(CommonResourceManager.Instance.GetResourceString(ResourceStrings.RefreshReportResourceString), false, RefreshReport));
            tournamentsGridContextMenu.Items.Add(CreateRadMenuItem(CommonResourceManager.Instance.GetResourceString(ResourceStrings.ExportToExcelReportResourceString), false, ExportReport));
            tournamentsGridContextMenu.Items.Add(CreateRadMenuItem(CommonResourceManager.Instance.GetResourceString(ResourceStrings.ExportHandsResourceString), false, null,
                                                                   command: nameof(ReportGadgetViewModel.ExportSelectedReportsTo3rdPartyCommand)));

            reportsGridContextMenu.Items.Add(CreateRadMenuItem(CommonResourceManager.Instance.GetResourceString(ResourceStrings.RefreshReportResourceString), false, RefreshReport));
            reportsGridContextMenu.Items.Add(CreateRadMenuItem(CommonResourceManager.Instance.GetResourceString(ResourceStrings.ExportToExcelReportResourceString), false, ExportReport));
            reportsGridContextMenu.Items.Add(CreateRadMenuItem(CommonResourceManager.Instance.GetResourceString(ResourceStrings.ExportHandsResourceString), false, null,
                                                               command: nameof(ReportGadgetViewModel.ExportSelectedReportsTo3rdPartyCommand)));
        }
Exemple #16
0
        /// <summary>
        /// The OnMenuOpened.
        /// </summary>
        /// <param name="sender">The sender<see cref="object"/>.</param>
        /// <param name="e">The e<see cref="RoutedEventArgs"/>.</param>
        public void OnMenuOpened(object sender, RoutedEventArgs e)
        {
            RadContextMenu     menu = (RadContextMenu)sender;
            GridViewHeaderCell cell = menu.GetClickedElement <GridViewHeaderCell>();

            if (cell != null)
            {
                menu.Items.Clear();

                if (cell.Column.CanFilter())
                {
                    string insertString = (string)(cell.Column.Tag ?? cell.Column.Header);
                    menu.Items.Add(new RadMenuItem
                    {
                        Header = string.Format(@"Sort Ascending by ""{0}""", insertString),
                    });

                    menu.Items.Add(new RadMenuItem
                    {
                        Header = string.Format(@"Sort Descending by ""{0}""", insertString),
                    });

                    menu.Items.Add(new RadMenuItem
                    {
                        Header = string.Format(@"Clear Sorting by ""{0}""", insertString),
                    });

                    menu.Items.Add(new RadMenuItem
                    {
                        Header = string.Format(@"Group by ""{0}""", insertString),
                    });

                    menu.Items.Add(new RadMenuItem
                    {
                        Header = string.Format(@"Ungroup ""{0}""", insertString),
                    });
                }

                RadMenuItem item = new RadMenuItem
                {
                    Header = "Choose Columns:",
                };
                menu.Items.Add(item);

                // create menu items
                foreach (GridViewColumn column in _grid.Columns)
                {
                    RadMenuItem subMenu = new RadMenuItem
                    {
                        Header      = column.Tag ?? column.Header,
                        IsCheckable = true,
                        IsChecked   = true,
                    };

                    Binding isCheckedBinding = new Binding("IsVisible")
                    {
                        Mode   = BindingMode.TwoWay,
                        Source = column,
                    };

                    // bind IsChecked menu item property to IsVisible column property
                    subMenu.SetBinding(RadMenuItem.IsCheckedProperty, isCheckedBinding);
                    item.Items.Add(subMenu);
                }
            }
            else
            {
                menu.IsOpen = false;
            }
        }