Проверка флажка WPF IsChecked

Я не говорю о обработчике событий для этого, а просто о простой проверке If Statement, если был отмечен CheckBox. До сих пор я:

if (chkRevLoop.IsChecked == true){}

Но это вызывает ошибку:

Невозможно неявно преобразовать тип 'bool?' на "bool". Явное преобразование существует (вы пропускаете листинг?)

Есть ли способ сделать это, что мне не хватает?

Ответы

Ответ 2

Несколько ответов уже, но вот еще одна альтернатива

if (chkRevLoop.IsChecked.GetValueOrDefault() == true){}

Из MSDN

Ответ 3

Попробуйте проверить, имеет ли свойство значение:

var isChecked = chkRevLoop.IsChecked.HasValue ? chkRevLoop.IsChecked : false;

if (isChecked == true){}

Ответ 4

A bool? может быть true, false или null, а bool может быть только true или false. ? делает тип "nullable" и добавляет null как возможность, когда это обычно не так, поэтому вы можете просто использовать

if ((bool)chkRevLoop.IsChecked == true){}

или

if (chkRevLoop.IsChecked == (bool?)true){}

чтобы он совпадал и работал. Второй, вероятно, лучше, так как я не знаю, что произойдет в трансляции, если IsChecked имеет значение null

Ответ 5

Вы должны сделать это преобразование от bool? до bool, чтобы заставить его работать:

if((bool)(chkRevLoop.IsChecked)){}

Так как это уже условие bool, вам не нужно указывать true false, потому что, если оно истинно, тогда только это произойдет, если условие else не будет. поэтому не нужно даже помещать chkRevLoop.IsChecked == true здесь, вы по умолчанию задаете ==true по puttin IsChecked

Ответ 6

IsChecked свойство CheckBox является Nullable boolean.

public bool? IsChecked { get; set; }

Создайте Nullable boolean и приравняйте его к работе.

код

bool? NullableBool = chkRevLoop.IsChecked;
if(NullableBool == true)
{
}

Ответ 7

Вы должны использовать объект Nullable. Поскольку свойство IsChecked может быть назначено на три разных значения: Null, true и false

Nullable<bool> isChecked  = new Nullable<bool>(); 
isChecked = chkRevLoop.IsChecked; 

if (isChecked.HasValue && isChecked.Value)
{


}

Ответ 8

Одной строки достаточно, чтобы проверить, включен ли переключатель или нет:

string status = Convert.ToBoolean(RadioButton.IsChecked) ? "Checked" : "Not Checked";