Back to Devexpress

RemoveSpreadsheetCommandAction Class

wpf-devexpress-dot-xpf-dot-spreadsheet-dot-menu-d7fde9c0.md

latest7.7 KB
Original Source

RemoveSpreadsheetCommandAction Class

An action that removes a bar item associated with a specific Spreadsheet command. This action also deletes all links to this bar item from bars, menus, submenus, and other link holders.

Namespace : DevExpress.Xpf.Spreadsheet.Menu

Assembly : DevExpress.Xpf.Spreadsheet.v25.2.dll

NuGet Package : DevExpress.Wpf.Spreadsheet

Declaration

csharp
public class RemoveSpreadsheetCommandAction :
    RemoveBarItemLinkAction
vb
Public Class RemoveSpreadsheetCommandAction
    Inherits RemoveBarItemLinkAction

Remarks

Add a RemoveSpreadsheetCommandAction instance to the PopupMenuShowingEventArgs.Customizations collection to remove command links for the command defined by the RemoveSpreadsheetCommandAction.Id property.

RemoveSpreadsheetCommandAction removes a bar item from the BarManager.Items collection and deletes all links to the bar item from link holders (bars, ribbon, menus, and so on).

Example

The example below customizes the Cell context menu as follows:

  • Creates new Merge Cells and Highlight Cells items
  • Removes the Insert Comment and Hyperlink items

xaml
<dxsps:SpreadsheetControl x:Name="spreadsheetControl" 
                          PopupMenuShowing="spreadsheetControl_PopupMenuShowing"/>
csharp
using DevExpress.Xpf.Bars;
using DevExpress.Xpf.Spreadsheet;
using DevExpress.Xpf.Spreadsheet.Menu;
using DevExpress.XtraSpreadsheet.Commands;
// ... 

private void spreadsheetControl_PopupMenuShowing(object sender, PopupMenuShowingEventArgs e) {
    // Check whether the event is raised for a spreadsheet cell.
    if (e.MenuType == SpreadsheetMenuType.Cell) {

        // Create a menu item to merge selected cells
        // and bind this item to the spreadsheet command.
        e.Customizations.Add(new BarButtonItem() {
            Command = SpreadsheetUICommand.EditingMergeAndCenterCells,
            Content = "Merge Cells",
            CommandParameter = spreadsheetControl
        });

        // Create a custom menu item to highlight selected cells.
        var menuItem = new BarButtonItem();
        menuItem.Name = "highlightCellsItem";
        menuItem.Content = "Highlight Cells";
        menuItem.ItemClick += MenuItem_ItemClick;
        e.Customizations.Add(menuItem);
    }

    // Remove the "Insert Comment" item from the menu.
    e.Customizations.Add(new RemoveSpreadsheetCommandAction() {
        Id = SpreadsheetCommandId.ReviewInsertCommentContextMenuItem
    });

    // Remove the "Hyperlink" item from the menu.
    e.Customizations.Add(new RemoveSpreadsheetCommandAction() {
        Id = SpreadsheetCommandId.InsertHyperlinkContextMenuItem
    });
}

private void MenuItem_ItemClick(object sender, ItemClickEventArgs e) {
    // Fill selected cells with the yellow color.
    spreadsheetControl.Selection.FillColor = System.Drawing.Color.Yellow;
}
vb
Imports DevExpress.Xpf.Bars
Imports DevExpress.Xpf.Spreadsheet
Imports DevExpress.Xpf.Spreadsheet.Menu
Imports DevExpress.XtraSpreadsheet.Commands
' ...

Private Sub spreadsheetControl_PopupMenuShowing(ByVal sender As Object, ByVal e As PopupMenuShowingEventArgs)
    ' Check whether the event is raised for a spreadsheet cell.
    If e.MenuType = SpreadsheetMenuType.Cell Then

        ' Create a menu item to merge selected cells
        ' and bind this item to the spreadsheet command.
        e.Customizations.Add(New BarButtonItem() With {
            .Command = SpreadsheetUICommand.EditingMergeAndCenterCells,
            .Content = "Merge Cells",
            .CommandParameter = spreadsheetControl
        })

        ' Create a custom menu item to highlight selected cells.
        Dim menuItem As New BarButtonItem()
        menuItem.Name = "highlightCellsItem"
        menuItem.Content = "Highlight Cells"
        menuItem.ItemClick += MenuItem_ItemClick
        e.Customizations.Add(menuItem)
    End If

    ' Remove the "Insert Comment" item from the menu.
    e.Customizations.Add(New RemoveSpreadsheetCommandAction() With {
        .Id = SpreadsheetCommandId.ReviewInsertCommentContextMenuItem})

    ' Remove the "Hyperlink" item from the menu.
    e.Customizations.Add(New RemoveSpreadsheetCommandAction() With {
        .Id = SpreadsheetCommandId.InsertHyperlinkContextMenuItem})
End Sub

Private Sub MenuItem_ItemClick(ByVal sender As Object, ByVal e As ItemClickEventArgs)
    ' Fill selected cells with the yellow color.
    spreadsheetControl.Selection.FillColor = System.Drawing.Color.Yellow
End Sub

The following code snippet (auto-collected from DevExpress Examples) contains a reference to the RemoveSpreadsheetCommandAction class.

Note

The algorithm used to collect these code examples remains a work in progress. Accordingly, the links and snippets below may produce inaccurate results. If you encounter an issue with code examples below, please use the feedback form on this page to report the issue.

wpf-spreadsheet-customize-context-menu/CS/MenuCustomization/MainWindow.xaml#L53

xml
<dxsps:SpreadsheetMenuCustomization MenuType="ColumnHeading">
    <dxsps:RemoveSpreadsheetCommandAction Id="{x:Static dxspscore:SpreadsheetCommandId.HideColumnsContextMenuItem}" />
    <dxsps:RemoveSpreadsheetCommandAction Id="{x:Static dxspscore:SpreadsheetCommandId.UnhideColumnsContextMenuItem}" />

Implements

IControllerAction

Inheritance

Show 11 items

Object DispatcherObject DependencyObject ContentElement FrameworkContentElement DXFrameworkContentElement BarManagerControllerActionBase BarItemLinkActionBase UpdateBarItemLinkActionBase RemoveBarItemLinkAction RemoveSpreadsheetCommandAction

See Also

RemoveSpreadsheetCommandAction Members

Customize the Spreadsheet Context Menus

Spreadsheet Context Menus

DevExpress.Xpf.Spreadsheet.Menu Namespace