Tag

ColumnBase.CellDisplayTemplate Property

Gets or sets a template that displays column values. This is a dependency property.

Namespace: DevExpress.Xpf.Grid

Assembly: DevExpress.Xpf.Grid.v21.1.Core.dll

Declaration

public DataTemplate CellDisplayTemplate { get; set; }

Property Value

Type Description
DataTemplate

A template that displays column values.

Remarks

The binding source for the CellDisplayTemplate is EditGridCellData. Refer to the Data Binding section.

To apply different cell templates based on certain conditions, use a custom CellDisplayTemplateSelector. If both the CellDisplayTemplate and CellDisplayTemplateSelector are specified, the template returned by the template selector has a higher priority. If the template selector returns null, the template specified by the CellDisplayTemplate property is used.

Each column has the following templates that define editors for display and edit modes:

Template Description
ColumnBase.CellDisplayTemplate / DataViewBase.CellDisplayTemplate Defines a template that displays column values.
ColumnBase.CellEditTemplate / DataViewBase.CellEditTemplate Defines a template that represents an editor used to edit cell values.

Custom In-Place Cell Editors

We recommend that you use a custom editor in the cell template as follows:

  • The editor is a BaseEdit descendant.
  • The editor’s Name property is set to PART_Editor.

This technique has the following advantages:

  • Binds the editor’s value to the source field specified by the ColumnBase.FieldName or ColumnBase.Binding properties.
  • Removes the editor’s border to adjust the appearance of in-place use.

Non-DevExpress Editors

You can use non-BaseEdit cell editors in the CellDisplayTemplate to display and edit data. This method has the following limitations:

  • You cannot use the PART_Editor method and you should bind the editor’s value.
  • Reduced performance compared to DevExpress editors that use lightweight templates to display cell values.
  • The GridControl does not remove the editor’s borders to adjust the appearance of in-place use.
  • Search text highlighting is not supported.
  • Conditional Formatting is not supported.

In the following code sample, a numeric column uses the ProgressBarEdit editors to display data. When users focus cells, the TrackBarEdit editors replace progress bars:

<dxg:GridControl>
    <!-- ... -->
    <dxg:GridColumn FieldName="UnitsOnOrder">
        <dxg:GridColumn.CellDisplayTemplate>
            <DataTemplate>
                <dxe:ProgressBarEdit Name="PART_Editor" Minimum="0" Maximum="50" />
            </DataTemplate>
        </dxg:GridColumn.CellDisplayTemplate>
        <dxg:GridColumn.CellEditTemplate>
            <DataTemplate>
                <dxe:TrackBarEdit Name="PART_Editor" Minimum="0" Maximum="50" />
            </DataTemplate>  
        </dxg:GridColumn.CellEditTemplate>
    </dxg:GridColumn>
    <!-- ... -->   
</dxg:GridControl>

Data Binding

Cell elements contain EditGridCellData objects in their DataContext.

Use the following binding paths to access cell values, columns, and ViewModel properties:

  • Value - access the current cell value;
  • Column - access the current column;
  • RowData.Row.[YourPropertyName] - access a property of an object from the ItemsSource collection;
  • Data.[FieldName] - access column values in Server Mode, access unbound column values;
  • View.DataContext.[YourPropertyName] - access a property in a grid’s ViewModel.

Data Processing and EditSettings

When you use the CellDisplayTemplate, the editor specified in the EditSettings property is ignored. However, the EditSettings value affects the formatting settings, data processing (sorting, grouping, filtering, summary calculation), and export.

See Also