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.

Original source