Skip to main content
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.v23.2.Core.dll

NuGet Package: DevExpress.Wpf.Grid.Core

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

View Example: How to Use Custom Editors to Edit Cell Values

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 or if you use the RealTimeSource, access unbound column values;
  • View.DataContext.[YourPropertyName] - access a property in a grid’s ViewModel.

View Example: Build Binding Paths in WPF Data Grid Cells

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.

The following code snippets (auto-collected from DevExpress Examples) contain references to the CellDisplayTemplate 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.

See Also