因此对于Winforms来说,很容易做到这一点:
streamWriter.WriteLine(this.checkbox1.Checked ? "1" : "0");
但我怎么能在WPF中做到这一点? 我必须使用" .IsChecked"然后我收到消息,我无法转换bool?进入布尔。
我刚试过:
streamWriter.WriteLine(this.checkbox1.IsChecked ? "1" : "0");
哪个不起作用。
答案 0 :(得分:2)
在WPF中,Checkbox.IsChecked
属于Nullable
类型。因此,您必须将代码修改为:
streamWriter.WriteLine((this.checkbox1.IsChecked == true) ? "1" : "0");
注意:如果您在?
之后看到DataType
:bool? abc
,则表示abc
可以null
作为其值,默认情况下bool
变量不接受null
作为值。
示例:
对于int
数据类型:
int variable = 0; //correct
int variable = null; //incorrect
int? variable = null; //correct
int? variable = 1; //correct
对于bool
数据类型:
bool mybool = false; //correct
bool mybool = null; //incorrect
bool? mybool = null; //correct
bool? mybool = true; //correct
同样在bool? mybool = true;
和int? variable = 1;
中,如果您还希望将这些变量的值检索为正确的bool
或int
,则必须转换使用它们
分别为Convert.ToBoolean
,Convert.ToInt32
。
答案 1 :(得分:1)
CheckBox
从IsChecked
继承ToggleButton
。 ToggleButton
并非设计为"必须经过检查或取消选中"。 ToggleButton
只是您可以切换的内容。对于复选框,如果您启用IsChecked
,则IsThreeStates
可以为空。
然后你必须决定当复选框处于第三状态时会发生什么。你想要它是1还是0?
streamWriter.WriteLine((this.checkbox1.IsChecked ?? false) ? "1" : "0");
^^^^^
//如果您希望第三个州为" 1"
,请将此替换为true如果您未启用IsThreeStates
,则可以在true
之后编写false
或??
。
答案 2 :(得分:0)
复选框属于可空类型。此外,在xaml中使用click
事件。写完文件后别忘了调用Close()
方法。