как реализовать инвертированный выбор для флажка в wpf c # - PullRequest
1 голос
/ 11 апреля 2019

Возможен ли обратный выбор для флажка в WPF?Например: если есть 3 флажка A, B, C и флажок A и C отмечены, в то время как B не отмечен. Изображение 1: перед нажатием обратной кнопки проверяются A и C Если я нажимаю кнопку для обратного выбора, то A и C должны быть не отмечены, а B должен быть проверен, как показано на изображении 2

image2: после нажатия на кнопку инверсии проверяется B, а флажки A, C не проверяются

Пример обратного выбора

Ответы [ 2 ]

0 голосов
/ 11 апреля 2019
 <StackPanel>
    <CheckBox Name="CB1" Content="A" IsChecked="True"></CheckBox>
    <CheckBox Name="CB2" Content="B"></CheckBox>
    <CheckBox Name="CB3" Content="C" IsChecked="True"></CheckBox>
    <Button Name="btnInvert" Content="Invert" Click="btnInvert_Click" ></Button>
 </StackPanel>

Кодовая логика:

 private void btnInvert_Click(object sender, RoutedEventArgs e)
    {
        if (CB1.IsChecked == true && CB3.IsChecked == true)
        {
            CB2.IsChecked = true;
            CB1.IsChecked = false;
            CB3.IsChecked = false;
        }
        else
        {
            CB2.IsChecked = false;
            CB1.IsChecked = true;
            CB3.IsChecked = true;
        }
    }

Или просто:

 private void btnInvert_Click(object sender, RoutedEventArgs e)
    {
        if (CB1.IsChecked == true && CB3.IsChecked == true)
        {
            CB2.IsChecked = true;
            CB1.IsChecked = false;
            CB3.IsChecked = false;
        }
    }

По вашему требованию.

if (CB1.IsChecked == true && CB3.IsChecked == true&& CB2.IsChecked== false)
        {
            CB2.IsChecked = true;
            CB1.IsChecked = false;
            CB3.IsChecked = false;
        }
        else
        {
            CB2.IsChecked = false;
            CB1.IsChecked = true;
            CB3.IsChecked = true;
        }
0 голосов
/ 11 апреля 2019

РЕДАКТИРОВАТЬ: С добавленной вами информацией, которую вы хотите создать флажки динамически, я рекомендую использовать этот код XAML:

        <StackPanel Name="stk">                
            <!-- Add checkboxes dynamically to this stackpanel -->
            <Button Click="Button_Click">Invert</Button>
        </StackPanel>

И это событие Click

    private void Button_Click(object sender, RoutedEventArgs e)
    {
        foreach (var cb in stk.Children.OfType<CheckBox>())
        {
            cb.IsChecked = !cb.IsChecked;
        }
    }

использовать это длядобавить флажки:

stk.Children.Add(new CheckBox());
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...