Herboren Ответов: 1

Нужна помощь с add_click no passing 1+ parameter


Итак, у меня есть интерфейс XAML, и я пытаюсь снять флажок и изменить его цвет переднего плана с одного цвета на другой. К сожалению, он работает не так, как планировалось. Несмотря на то, что у меня есть обе команды, запущенные в событии Add_Click, я должен нажать дважды, один щелчок, чтобы снять флажок, а затем еще один щелчок, чтобы изменить его цвет, но он не работает в целом. Я даже пытался запустить его из функции, и это все еще повторяющаяся проблема.

Что я уже пробовал:

При проверке, если $DC показывает блокировку
If($UserInfo.LastBadPasswordAttempt){
    if($UserInfo.LockedOut -eq $true) {
        if($DC -match $_chkServer1.Content) {
            $_chkServer1.IsChecked = $true
            $_chkServer1.Foreground = 'Red'
        }
    }        
}

Затем, когда пользователи снимают флажок с помощью события Add_Click ({}).
$_chkServer1.Add_Click({
    if($_chkServer1.IsChecked)
    {
        $_chkServer1.IsChecked = $false             
        $_chkServer1.Foreground = 'Green'
    }
})

А потом с функцией
$_chkServer1.Add_Click({
    if($_chkServer1.IsChecked)
    {
        ChangeState -i 1
    }
}) 

Function ChangeState([int]$i)
{
    switch ($i)
    {
        1 {
            $_chkServer1.IsChecked = $false             
            $_chkServer1.Foreground 
        }
    }
}

Передний план не меняется при снятии флажка. Когда я снимаю флажок, передний план остается прежним (красным), затем я снова нажимаю (на содержимое флажка), а затем он меняется на зеленый. Каков должен быть результат: когда я снимаю флажок, он должен автоматически переключаться на зеленый цвет, но он этого не делает, я должен дважды щелкнуть по нему, чтобы он стал зеленым.

1 Ответов

Рейтинг:
1

Richard Deeming

Если флажок установлен и пользователь нажимает на него, он будет снят до то Click событие поднято.

Поэтому при первом щелчке флажок снимается, и обработчик событий ничего не делает. При повторном щелчке флажок будет установлен, и обработчик событий снова снимет его.

Измените свой обработчик событий на:

$_chkServer1.Add_Click({
    if (-Not $_chkServer1.IsChecked)
    {
        $_chkServer1.Foreground = 'Green'
    }
})