简体   繁体   中英

XAML WPF CheckBox Validation

I have a list of CheckBox'es . I would like the user to select at least one before click the next button.

I would want the Button to remain Enabled , but use a TextBlock below the CheckBox to show the prompt to select at least one CheckBox .

How can I check that.

Code:

XAML

<CheckBox x:Name="CheckBox1"  Content="CheckBox1" />
<CheckBox x:Name="CheckBox2"  Content="CheckBox2" />
<CheckBox x:Name="CheckBox3"  Content="CheckBox3" />
<CheckBox x:Name="CheckBox4"  Content="CheckBox4" />

<Button x:Name="NextButton" Click="NextButton_Click"/>

Code Behind

private void NextButton_Click(object sender, RoutedEventArgs e) {
    if (CheckBox1.IsChecked ?? false) {
        // do something
    }
   // same for other checkBoxes
}
private void NextButton_Click(object sender, RoutedEventArgs e) 
{
    if (!CheckBox1.IsChecked && !CheckBox2.IsChecked && !CheckBox3.IsChecked && !CheckBox4.IsChecked)
    {
        // update TextBlock to alert the user 
    }
    else 
    {
        if (CheckBox1.IsChecked) 
        {
            // do something
        }
       // same for other checkboxes
    }
}

You can also do the following, based on the example of just one CheckBox :

XAML

<CheckBox x:Name="CheckBox1"  Content="CheckBox1" Checked="CheckBox1_OnChecked"/>
// after all your CheckBoxes insert TextBlock below
// which is Visible by default (but invisible once any CheckBox is checked)
<TextBlock x:Name="TextBlock" Visibility="Visible" Text="Please, select at least 1 checkbox"/>
<Button x:Name="NextButton" Click="NextButton_Click" Height="Auto" Width="Auto" Content="Button"/>

Code Behind

private void NextButton_Click(object sender, RoutedEventArgs e)
{
    // your code
}

// We make Visibility of TextBox hidden
// Think for yourself how to take into account
// several CheckBoxes checked vs unchecked
private void CheckBox1_OnChecked(object sender, RoutedEventArgs e)
{
    TextBlock.Visibility = Visibility.Hidden;
}

Think for yourself how to take into account several CheckBoxes checked vs unchecked, you may also use CheckBoxes event handler for Unchecked event: Unchecked="CheckBox1_OnUnchecked"

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM