0

I want to enable button until all fields are filled and I did that but I don't know how to do that with checkboxes. I need at least one of them to be checked and it has to be done from xaml not code behind. If anyone can help I'll appreciate it.

Here is my xaml code:

<Button.Style>
            <Style TargetType="{x:Type Button}">
                <Style.Triggers>
                    <DataTrigger Binding="{Binding Text.Length, ElementName=firstname, UpdateSourceTrigger=PropertyChanged}" Value="0">
                        <Setter Property="IsEnabled" Value="False"/>
                    </DataTrigger>
                    <DataTrigger Binding="{Binding Text.Length, ElementName=lastname, UpdateSourceTrigger=PropertyChanged}" Value="0">
                        <Setter Property="IsEnabled" Value="False"/>
                    </DataTrigger>
                    <DataTrigger Binding="{Binding Text.Length, ElementName=username, UpdateSourceTrigger=PropertyChanged}" Value="0">
                        <Setter Property="IsEnabled" Value="False"/>
                    </DataTrigger>
                    <DataTrigger Binding="{Binding Text.Length, ElementName=password, UpdateSourceTrigger=PropertyChanged}" Value="0">
                        <Setter Property="IsEnabled" Value="False"/>
                    </DataTrigger>
                    <DataTrigger Binding="{Binding IsChecked, ElementName=scientist}" Value="false">
                        <Setter Property="IsEnabled" Value="False"/>
                    </DataTrigger>
                    <DataTrigger Binding="{Binding IsChecked, ElementName=writer}" Value="false">
                        <Setter Property="IsEnabled" Value="False"/>
                    </DataTrigger>
                    <DataTrigger Binding="{Binding IsChecked, ElementName=programmer}" Value="false">
                        <Setter Property="IsEnabled" Value="False"/>
                    </DataTrigger>
                </Style.Triggers>
            </Style>
        </Button.Style> 

EDIT: This will enable button only when all the check boxes are checked, but I need it to be enabled when at least one of them is checked.

xena12
  • 17
  • 9
  • 1
    The code you show is basically correct. If it's not working as intended, then there's something about the context which you haven't shared with us causing the problem. Fix your question so that it includes a good [mcve] that shows clearly what you've tried and which reliably reproduces your problem. – Peter Duniho Jun 10 '17 at 23:57
  • Instead of setting `IsEnabled = False`, set `IsEnabled = True` when `IsChecked = True` for all checkboxes. – AnjumSKhan Jun 11 '17 at 04:40

1 Answers1

0

You need a MultiDataTrigger...

            <MultiDataTrigger>
                <MultiDataTrigger.Conditions>
                    <Condition Binding="{Binding IsChecked, ElementName=scientist}" Value="false"/>
                    <Condition Binding="{Binding IsChecked, ElementName=writer}" Value="false"/>
                    <Condition Binding="{Binding IsChecked, ElementName=programmer}" Value="false"/>
                </MultiDataTrigger.Conditions>
                <Setter Property="IsEnabled" Value="False"/>
            </MultiDataTrigger>
AQuirky
  • 4,691
  • 2
  • 32
  • 51