Проверка флажка WPF IsChecked
Я не говорю о обработчике событий для этого, а просто о простой проверке If Statement
, если был отмечен CheckBox
. До сих пор я:
if (chkRevLoop.IsChecked == true){}
Но это вызывает ошибку:
Невозможно неявно преобразовать тип 'bool?' на "bool". Явное преобразование существует (вы пропускаете листинг?)
Есть ли способ сделать это, что мне не хватает?
Ответы
Ответ 1
Вы можете использовать нулевой оператор коалесценции. Этот оператор возвращает false
, когда CheckBox
находится в неопределенный состояние (когда значение свойства IsChecked
установлено равным нулю):
if (chkRevLoop.IsChecked ?? false)
{
}
Ответ 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";