Skip to main content
All docs
V24.2

DevExpress v24.2 Update — Your Feedback Matters

Our What's New in v24.2 webpage includes product-specific surveys. Your response to our survey questions will help us measure product satisfaction for features released in this major update and help us refine our plans for our next major release.

Take the survey Not interested

TableView.CellMergeCommand Property

Gets or sets a command that allows you to specify custom cell merge rules.

Namespace: DevExpress.Xpf.Grid

Assembly: DevExpress.Xpf.Grid.v24.2.dll

NuGet Package: DevExpress.Wpf.Grid.Core

#Declaration

public ICommand<CellMergeArgs> CellMergeCommand { get; set; }

#Property Value

Type Description
ICommand<CellMergeArgs>

A command that allows you to specify custom cell merge rules.

#Remarks

Bind a command to the CellMergeCommand property to maintain a clean MVVM pattern. The command works like a CellMerge event handler and allows you to specify custom merge rules in a View Model.

Set the TableView.AllowCellMerge property to true to merge adjacent cells in each column if they have matching values.

The CellMergeCommand property allows you to control how the GridControl merges cells. For example, you can merge adjacent cells with different values based on custom logic.

#Example

The code sample below merges cells in the Order Date column if they have the same month and year:

DevExpress WPF | Grid Control - Custom Cell Merge Rules

<dxg:GridControl ItemsSource="{Binding Orders}">
    <dxg:GridColumn FieldName="OrderDate" AllowCellMerge="True">
        <dxg:GridColumn.EditSettings>
            <dxe:DateEditSettings DisplayFormat="MMMM yyyy"/>
        </dxg:GridColumn.EditSettings>
    </dxg:GridColumn>
    <!-- ... -->
    <dxg:GridControl.View>
        <dxg:TableView CellMergeCommand="{Binding CellMergeCommand}">
    </dxg:TableView>
    </dxg:GridControl.View>
</dxg:GridControl>
public class ViewModel : ViewModelBase {
    // ...
    [Command]
    public void CellMerge(CellMergeArgs args) {
        if(args.FieldName == nameof(Order.OrderDate)) {
            if(((DateTime)args.FirstCellValue).Month == ((DateTime)args.SecondCellValue).Month 
            && ((DateTime)args.FirstCellValue).Year == ((DateTime)args.SecondCellValue).Year) {
                args.Merge = true;
            }
        }
    }
}
See Also