I have a Datagrid I want to provide some data validation, but I need to avoid the locking mechanism that usually occurs when a cell is in an invalid state. Is there a way to bind to the IDataErrorInfo errors on a model without using the grid-locking ValidatesOnDataErrors?

To put it specifically, I want to display the tooltip and the adorner for the error without locking the grid.

Thanks!

有帮助吗?

解决方案

Turns out this can be achieved by using the validation only on the CellTemplate of a DataGridTemplateColumn.

Such as:

 <DataGridTemplateColumn Header="Destination Column">
                    <DataGridTemplateColumn.CellEditingTemplate>
                        <DataTemplate>
                            <ComboBox IsEditable="True"
                                      IsTextSearchCaseSensitive="{Binding ElementName=caseSensitiveSearch, Path=IsChecked}"
                                      ItemsSource="{Binding AllSuggestedNames}"
                                      TextSearch.TextPath="SuggestedName"
                                      Text="{Binding ColumnMapping.DestinationColumnName, UpdateSourceTrigger=PropertyChanged}"/>
                        </DataTemplate>
                    </DataGridTemplateColumn.CellEditingTemplate>
                    <DataGridTemplateColumn.CellTemplate>
                        <DataTemplate>
                            <TextBlock Style="{StaticResource TextBlockValidationStyle}"
                                       Text="{Binding ColumnMapping.DestinationColumnName, 
                                                ValidatesOnDataErrors=True, 
                                                NotifyOnValidationError=True, 
                                                UpdateSourceTrigger=PropertyChanged}"
                                       Validation.ErrorTemplate="{StaticResource validationTemplate}"/>
                        </DataTemplate>
                    </DataGridTemplateColumn.CellTemplate>
                </DataGridTemplateColumn>
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top