This example demonstrates how to show multiple editors within one cell by overriding the ContentTemplate.
There two ways to do this:
1. Put a CellEditorPresenter to a ContextTemplate and set its Path property to the name of the required property:
[XAML]<dxprg:PropertyDefinition.ContentTemplate><DataTemplate><StackPanel><dxprg:CellEditorPresenterPath="x"PathMode="Absolute"/><dxprg:CellEditorPresenterPath="y"PathMode="Absolute"/><dxprg:CellEditorPresenterPath="z"PathMode="Absolute"/></StackPanel></DataTemplate></dxprg:PropertyDefinition.ContentTemplate>
This is the recommended approach, because the native navigation, inplace editing, and other similar features will work automatically in this case.
2. As an alternative solution, it's possible to manually bind editor properties to the underlying data source values:
[XAML]<dxprg:PropertyDefinition.ContentTemplate><DataTemplate><StackPanel><dxe:SpinEditEditValue="{Binding Path=Parent.Value.x, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"dxprg:NavigationManager.NavigationMode="Auto"/><dxe:SpinEditEditValue="{Binding Path=Parent.Value.y, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"dxprg:NavigationManager.NavigationMode="Auto"/><dxe:SpinEditEditValue="{Binding Path=Parent.Value.z, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"dxprg:NavigationManager.NavigationMode="Auto"/></StackPanel></DataTemplate></dxprg:PropertyDefinition.ContentTemplate>
In this case, the features we mentioned in the previous point will not work. However, if you don't need to edit data in a cell or you wish to display a custom control there, this approach will work fine.
This example demonstrates both approaches. For the "Value1" column, we used the first approach, for "Value2" - the second one.