WPF复选框检查IsChecked

时间:2015-07-30 21:18:27

标签: c# wpf if-statement

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

if (chkRevLoop.IsChecked == true){}

但这引发了错误:

  

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

有没有办法解决这个问题?

8 个答案:

答案 0 :(得分:26)

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

if (chkRevLoop.IsChecked ?? false)
{

}

答案 1 :(得分:6)

您必须执行从bool?bool的转换才能使其正常运行:

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

因为它已经是一个bool条件你不需要把它设为true,因为如果它是真的那么只有它才会进入这个条件,否则不会。 所以,不需要在chkRevLoop.IsChecked == true放置,默认情况下,您通过puttin ==true

询问IsChecked

答案 2 :(得分:4)

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

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

来自MSDN

答案 3 :(得分:4)

考虑检查属性是否有值:

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

if (isChecked == true){}

答案 4 :(得分:3)

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

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

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

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

答案 5 :(得分:2)

CheckBox的

new public void ClipboardPaste() { _imageCounter = 0; string current = C1.Silverlight.Clipboard.GetHtmlData(); // ... as posted above } 属性是Nullable boolean。

IsChecked

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

代码

public bool? IsChecked { get; set; }

答案 6 :(得分:2)

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

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

答案 7 :(得分:1)

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

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

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


}