Как сделать контекстное меню для каждой ячейки столбца в devexpress datagrid?

Как сделать контекстное меню для каждой ячейки столбца в devexpress datagrid?

   xmlns:dxg="http://schemas.devexpress.com/winfx/2008/xaml/grid"
  <dxg:GridControl  Grid.Row="0"  
                                  Height="150"                                      
                                  ItemsSource="{Binding ObjectViewModel.Collection,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}"
                                  SelectedItem="{Binding CurrentRow,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged,TargetNullValue=null}"
                                  >
                    <dxg:GridControl.Columns>

                        <dxg:GridColumn Header="Column1"}"                                                
                                            Width="*"                                            
                                            Binding="{Binding col1,Mode=OneWay}">
                        </dxg:GridColumn>
                        <dxg:GridColumn   Header="Column2"}
                                            AllowEditing="False"                                          
                                            Width="*"
                                            Binding="{Binding col2,Mode=OneWay}">
                            <!--<dxg:GridColumn.CellStyle>
                                <Style TargetType="DataGridCell">
                                    <Setter Property="ContextMenu">
                                        <Setter.Value>
                                            <ContextMenu>
                                                <MenuItem Header="Col2!"></MenuItem>
                                            </ContextMenu>
                                        </Setter.Value>
                                    </Setter>
                                </Style>
                            </dxg:GridColumn.CellStyle>-->
                        </dxg:GridColumn>                    
                </dxg:GridControl>

Как сделать ContextMenu для каждой колонки?

Например, когда контекстное меню щелкает по первому столбцу (ячейка принадлежит первому столбцу): отображается элемент «Меню столбца 1», а при щелчке по второму столбцу (ячейка принадлежит второму столбцу) отображается элемент «Меню столбца 2».


person Admiral Land    schedule 10.03.2017    source источник


Ответы (1)


Я нашел ответ:

 <dxg:GridControl.View>
                        <!--region #RowCellMenuCustomization-->
                        <dxg:TableView x:Name="view" AutoWidth="True">                             
                            <dxg:TableView.RowCellMenuCustomizations>

                                <dxb:BarButtonItem  Content="Menu1"                                           
                                       ItemClick="CellDataItem_Menu1_ItemClick"
                                                  Glyph="/MyCompany.UI.Resources;component/PNGImages/Menu1.png"
                                                   >
                               </dxb:BarButtonItem>                                                                      
                            </dxg:TableView.RowCellMenuCustomizations>
                        </dxg:TableView>

И обработчик:

private void CellDataItem_ByColumn_ItemClick(object sender, ItemClickEventArgs e)
    {
        var menuInfo = view.GridMenu.MenuInfo as GridCellMenuInfo;
        if (menuInfo != null && menuInfo.Row != null)
        {
            var column = menuInfo.Column as GridColumn;               
            if (column == null) return;

            if ((String)column.ActualColumnChooserHeaderCaption == _nameColumn)//context menu under column "Name"
            {
                //code here
            }
            else if(...)
            {}

        }
    }
person Admiral Land    schedule 20.03.2017