wpf-devexpress-dot-xpf-dot-pivotgrid-dot-pivotgridcontrol-174d0b36.md
Allows you to customize the context menu, invoked when right-clicking the field headers, by adding new menu items or removing existing items.
Namespace : DevExpress.Xpf.PivotGrid
Assembly : DevExpress.Xpf.PivotGrid.v25.2.dll
NuGet Package : DevExpress.Wpf.PivotGrid
[Browsable(false)]
public BarManagerActionCollection HeaderMenuCustomizations { get; }
<Browsable(False)>
Public ReadOnly Property HeaderMenuCustomizations As BarManagerActionCollection
| Type | Description |
|---|---|
| BarManagerActionCollection |
A BarManagerActionCollection object, representing a collection of actions that manipulate menu items.
|
To learn more, see Context Menus, Items and Links and Bar Actions.
This example shows how to modify context menu for the Field , Data and Header areas in the PivotGridControl.
Note
The complete sample project How to Customize the Pivot Grid Context Menu is available in the DevExpress Examples repository.
?<Window
x:Class="WpfPivotGrid_CustomMenu.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:dxpg="http://schemas.devexpress.com/winfx/2008/xaml/pivotgrid"
xmlns:local="clr-namespace:WpfPivotGrid_CustomMenu"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:dxb="http://schemas.devexpress.com/winfx/2008/xaml/bars"
Width="800"
Height="500"
mc:Ignorable="d"
Loaded="Window_Loaded"
Title="MainWindow">
<Grid>
<dxb:BarManager Name="barManager">
<dxb:BarManager.Items>
<dxb:BarCheckItem Name="ShowColumnGrandTotals"
IsChecked="{Binding ElementName=pivotGrid, Path=ShowColumnGrandTotals, Mode=TwoWay}"
Content="Show Column Grand Totals" />
</dxb:BarManager.Items>
<dxpg:PivotGridControl Name="pivotGrid" RowTreeWidth="130">
<dxpg:PivotGridControl.Fields>
<dxpg:PivotGridField Area="RowArea" FieldName="Name" />
<dxpg:PivotGridField Area="RowArea" FieldName="Owner" />
<dxpg:PivotGridField Area="ColumnArea" FieldName="Type" />
<dxpg:PivotGridField Area="DataArea" FieldName="Value" />
<dxpg:PivotGridField Area="DataArea" FieldName="Target" />
</dxpg:PivotGridControl.Fields>
<dxpg:PivotGridControl.FieldValueMenuCustomizations>
<dxb:BarButtonItem Name="CopyFieldElementData" Content="Copy Field Element Value"
ItemClick="CopyFieldElementData_ItemClick"/>
<dxb:BarButtonItem Name="FilterFieldElementData" Content="Filter By Field Element"
ItemClick="FilterFieldElementData_ItemClick"/>
</dxpg:PivotGridControl.FieldValueMenuCustomizations>
<dxpg:PivotGridControl.CellMenuCustomizations>
<dxb:BarButtonItem Name="CopyCellElementData" Content="Copy Cell Data"
ItemClick="CopyCellElementData_ItemClick"/>
</dxpg:PivotGridControl.CellMenuCustomizations>
<dxpg:PivotGridControl.HeaderMenuCustomizations>
<dxb:RemoveBarItemAndLinkAction
ItemName="{x:Static dxpg:DefaultMenuItemNames.FieldOrder}" />
</dxpg:PivotGridControl.HeaderMenuCustomizations>
<dxpg:PivotGridControl.HeaderAreaMenuCustomizations >
<dxb:BarItemSeparator/>
<dxb:BarSubItem Content="Totals">
<dxb:BarSubItem.ItemLinks>
<dxb:BarCheckItemLink BarItemName="ShowColumnGrandTotals" />
</dxb:BarSubItem.ItemLinks>
</dxb:BarSubItem>
<dxb:RemoveBarItemAndLinkAction ItemName="ItemShowPrefilter" />
<dxb:RemoveBarItemAndLinkAction ItemName="ItemHidePrefilter" />
<dxb:RemoveBarItemAndLinkAction ItemName="ItemRefreshData" />
<dxb:RemoveBarItemAndLinkAction ItemName="ItemShowFieldList" />
</dxpg:PivotGridControl.HeaderAreaMenuCustomizations>
</dxpg:PivotGridControl>
</dxb:BarManager>
</Grid>
</Window>
?using DevExpress.Xpf.PivotGrid;
using System.Windows;
namespace WpfPivotGrid_CustomMenu
{
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
private void Window_Loaded(object sender, RoutedEventArgs e)
{
pivotGrid.DataSource = DataHelper.CreatePivotDataSource();
}
private void CopyFieldElementData_ItemClick(object sender, DevExpress.Xpf.Bars.ItemClickEventArgs e)
{
PivotGridFieldValueMenuInfo menuInfo = pivotGrid.GridMenu.MenuInfo as PivotGridFieldValueMenuInfo;
if (menuInfo != null && menuInfo.FieldValueElementData != null &&
menuInfo.FieldValueElementData.Value.ToString() != string.Empty)
{
Clipboard.SetDataObject(menuInfo.FieldValueElementData.Value);
}
}
private void FilterFieldElementData_ItemClick(object sender, DevExpress.Xpf.Bars.ItemClickEventArgs e)
{
PivotGridFieldValueMenuInfo menuInfo = pivotGrid.GridMenu.MenuInfo as PivotGridFieldValueMenuInfo;
if (menuInfo != null && menuInfo.FieldValueElementData != null &&
menuInfo.FieldValueElementData.Value != null &&
menuInfo.FieldValueElementData.Field != null)
{
PivotGridField field = menuInfo.FieldValueElementData.Field;
object value = menuInfo.FieldValueElementData.Value;
field.FilterValues.FilterType = FieldFilterType.Included;
field.FilterValues.Add(value);
}
}
private void CopyCellElementData_ItemClick(object sender, DevExpress.Xpf.Bars.ItemClickEventArgs e)
{
PivotGridCellMenuInfo menuInfo = pivotGrid.GridMenu.MenuInfo as PivotGridCellMenuInfo;
if (menuInfo != null && menuInfo.CellElementData != null &&
menuInfo.CellElementData.Value != null)
{
Clipboard.SetDataObject(menuInfo.CellElementData.DisplayText);
}
}
}
}
?Imports DevExpress.Xpf.PivotGrid
Imports System.Windows
Namespace WpfPivotGrid_CustomMenu
''' <summary>
''' Interaction logic for MainWindow.xaml
''' </summary>
Partial Public Class MainWindow
Inherits Window
Public Sub New()
InitializeComponent()
End Sub
Private Sub Window_Loaded(ByVal sender As Object, ByVal e As RoutedEventArgs)
pivotGrid.DataSource = DataHelper.CreatePivotDataSource()
End Sub
Private Sub CopyFieldElementData_ItemClick(ByVal sender As Object, ByVal e As DevExpress.Xpf.Bars.ItemClickEventArgs)
Dim menuInfo As PivotGridFieldValueMenuInfo = TryCast(pivotGrid.GridMenu.MenuInfo, PivotGridFieldValueMenuInfo)
If menuInfo IsNot Nothing AndAlso menuInfo.FieldValueElementData IsNot Nothing AndAlso menuInfo.FieldValueElementData.Value.ToString() <> String.Empty Then
Clipboard.SetDataObject(menuInfo.FieldValueElementData.Value)
End If
End Sub
Private Sub FilterFieldElementData_ItemClick(ByVal sender As Object, ByVal e As DevExpress.Xpf.Bars.ItemClickEventArgs)
Dim menuInfo As PivotGridFieldValueMenuInfo = TryCast(pivotGrid.GridMenu.MenuInfo, PivotGridFieldValueMenuInfo)
If menuInfo IsNot Nothing AndAlso menuInfo.FieldValueElementData IsNot Nothing AndAlso menuInfo.FieldValueElementData.Value IsNot Nothing AndAlso menuInfo.FieldValueElementData.Field IsNot Nothing Then
Dim field As PivotGridField = menuInfo.FieldValueElementData.Field
Dim value As Object = menuInfo.FieldValueElementData.Value
field.FilterValues.FilterType = FieldFilterType.Included
field.FilterValues.Add(value)
End If
End Sub
Private Sub CopyCellElementData_ItemClick(ByVal sender As Object, ByVal e As DevExpress.Xpf.Bars.ItemClickEventArgs)
Dim menuInfo As PivotGridCellMenuInfo = TryCast(pivotGrid.GridMenu.MenuInfo, PivotGridCellMenuInfo)
If menuInfo IsNot Nothing AndAlso menuInfo.CellElementData IsNot Nothing AndAlso menuInfo.CellElementData.Value IsNot Nothing Then
Clipboard.SetDataObject(menuInfo.CellElementData.DisplayText)
End If
End Sub
End Class
End Namespace
The following code snippet (auto-collected from DevExpress Examples) contains a reference to the HeaderMenuCustomizations property.
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-pivot-grid-create-context-menu-for-field-values/CS/WpfPivotGrid_CustomMenu/MainWindow.xaml#L41
</dxpg:PivotGridControl.CellMenuCustomizations>
<dxpg:PivotGridControl.HeaderMenuCustomizations>
<dxb:RemoveBarItemAndLinkAction
See Also