WPF复选框检查IsChecked

我不是在谈论一个事件处理程序,而是一个简单的If Statement检查CheckBox是否已被选中。 到目前为止我有:

 if (chkRevLoop.IsChecked == true){} 

但这引发了错误:

无法隐式转换类型’bool?’ ‘bool’。 存在显式转换(您是否错过了演员?)

有没有办法做到这一点,我错过了?

您可以使用null合并运算符 。 如果左侧操作数为空,则此运算符返回右侧操作数。 因此,当CheckBox处于不确定状态时(当IsChecked属性的值设置为null时),您可以返回false

 if (chkRevLoop.IsChecked ?? false) { } 

你必须从bool?做这个转换bool? bool ,使它工作:

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

因为它已经是一个bool条件你不需要设置真假,因为如果它是真的那么只有它会进入这个条件,否则不会。 所以,甚至不需要在这里放chkRevLoop.IsChecked == true ,你默认通过puttin IsChecked询问==true

考虑检查属性是否具有值:

 var isChecked = chkRevLoop.IsChecked.HasValue ? chkRevLoop.IsChecked : false; if (isChecked == true){} 

已有多个答案,但这是另一种选择

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

来自MSDN

一个bool? 可以是true,false或null,而bool只能是true或false。 ? 使一个类型为“可空”并且在通常不存在的情况下添加null,因此您可以使用它

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

要么

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

使它匹配和工作。 第二个可能更好,因为如果IsChecked为null,我不知道在演员阵容中会发生什么

CheckBox的IsChecked属性是Nullable boolean。

 public bool? IsChecked { get; set; } 

创建一个Nullable布尔值并等同它将适合您。

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

你应该使用Nullable对象。 因为IsChecked属性可以分配给三个不同的值:Null,true和false

 Nullable isChecked = new Nullable(); isChecked = chkRevLoop.IsChecked; if (isChecked.HasValue && isChecked.Value) { } 

一行就足以检查单选按钮是否被选中:

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