Disable/enable button with DataGridTextColumn validation
button, datagrid, multidatatrigger, validation, wpf
Solution
So I found solution:
int count = 0;
private void customersDataGrid_Error(object sender, ValidationErrorEventArgs e)
{
if (e.Action == ValidationErrorEventAction.Added)
{
save.IsEnabled = false;
count++;
}
if (e.Action == ValidationErrorEventAction.Removed)
{
count--;
if (count == 0) save.IsEnabled = true;
}
}
Problem
I have this `DataGrid`: ``` <DataGrid ItemsSource="{Binding CustomerXml}" Name="customersDataGrid" AutoGenerateColumns="False" DataContext="{Binding}"> <DataGrid.Columns> <DataGridTextColumn Header="Name"> <DataGridTextColumn.Binding> <Binding Path="Name" ValidatesOnDataErrors="True" UpdateSourceTrigger="PropertyChanged" NotifyOnValidationError="True"> <Binding.ValidationRules> <local:NameValidationRule/> </Binding.ValidationRules> </Binding> </DataGridTextColumn.Binding> </DataGridTextColumn> ... </DataGrid.Columns> </DataGrid> ``` and I'm trying disabling and enabling save button by `ValidationRule` result. ``` <Button Content="Save" Name="save" Click="save_Click"> <Button.Style> <Style TargetType="{x:Type Button}"> <Setter Property="IsEnabled" Value="false" /> <Style.Triggers> <MultiDataTrigger> <MultiDataTrigger.Conditions> <Condition Binding="{Binding ElementName=customersDataGrid, Path=(Validation.HasError)}" Value="false" /> </MultiDataTrigger.Conditions> <Setter Property="IsEnabled" Value="true" /> </MultiDataTrigger> </Style.Triggers> </Style> </Button.Style> </Button> ``` But if the `ValidationResult` is set to true or false, button is still disabled.