TreeListView.CellEditorValueChangingCommand Property
Gets or sets a command executed when a user edits a cell editor value (for example, types or deletes a character, chooses a value from the drop-down list, etc.).
Namespace: DevExpress.Xpf.Grid
Assembly: DevExpress.Xpf.Grid.v26.1.dll
Declaration
Property Value
| Type | Description |
|---|---|
| ICommand<CellEditorValueChangingArgs> | A command executed when a user edits a cell value (for example, types or deletes a character, chooses a value from the drop-down list, etc.). |
Remarks
The TreeListControl does not execute a command bound to CellValueChangingCommand when you change a cell editor value in code.
To restore the previous cell editor value (and prevent the CellValueChanging event from occurring), set the Cancel property to true.
Example
The following example prompts the user before changing a cell value. If the user cancels the action, the cell value remains unchanged:
<dx:ThemedWindow ...
xmlns:dx="http://schemas.devexpress.com/winfx/2008/xaml/core"
xmlns:dxg="http://schemas.devexpress.com/winfx/2008/xaml/grid"
xmlns:dxmvvm="http://schemas.devexpress.com/winfx/2008/xaml/mvvm">
<dxmvvm:Interaction.Behaviors>
<dx:DXMessageBoxService/>
</dxmvvm:Interaction.Behaviors>
<Grid>
<dxg:TreeListControl ItemsSource="{Binding DataItems}">
<dxg:TreeListControl.Columns>
<dxg:TreeListColumn FieldName="Name"/>
<dxg:TreeListColumn FieldName="Executor"/>
<dxg:TreeListColumn FieldName="State"/>
</dxg:TreeListControl.Columns>
<dxg:TreeListControl.View>
<dxg:TreeListView
TreeDerivationMode="ChildNodesSelector"
ChildNodesPath="Tasks"
CellEditorValueChangingCommand="{Binding StateChangingCommand}"/>
</dxg:TreeListControl.View>
</dxg:TreeListControl>
</Grid>
</dx:ThemedWindow>
public class ViewModel : ViewModelBase {
IMessageBoxService MessageBoxService { get { return GetService<IMessageBoxService>(); } }
[Command]
public void StateChanging(CellEditorValueChangingArgs args) {
if(args.FieldName == nameof(DataItem.State)) {
MessageResult result;
result = MessageBoxService.ShowMessage(
messageBoxText: "Changing the cell value will start time consuming calculations. Do you want to continue?",
caption: "Warning",
icon: MessageIcon.Warning,
button: MessageButton.OKCancel,
defaultResult: MessageResult.OK
);
switch(result) {
case MessageResult.OK:
args.Cancel = false;
break;
case MessageResult.Cancel:
args.Cancel = true;
break;
}
}
}
}