我的复选框在启动时没有正确绑定初始值:
<CheckBox IsThreeState="True" IsChecked="{Binding StartWithSettings,Mode=TwoWay}"/>
复选框在启动时显示为空,但应该为空(带有黑色方框的框)。
Getter在启动时正常引发null,我缺少什么?
您可以在下面找到我的viewmodel,型号代码和一个用于切换复选框的所有三种状态的按钮。在null状态和false状态之间切换时会发生奇怪的事情 - &gt;它始终显示false复选框,无论是null还是false,但基础数据都是正确的。
我通过单击复选框本身直接切换复选框状态,所有三种状态都正确显示。
这是一个Windows 8.1商店应用程序,也许wpf复选框控件不是“通常”的wpf复选框,并有一个错误?
public bool? StartWithSettings
{
get
{
return _configurationModel.MyAppModel.StartWithSettings;
}
set
{
_configurationModel.MyAppModel.StartWithSettings = value;
RaisePropertyChangedEvent("StartWithSettings");
}
}
public class MyAppModel
{
public bool? StartWithSettings { get; set; }
public MyAppModel()
{
this.StartWithSettings = null;
}
}
private void ChangeCheckboxState()
{
if (StartWithSettings == null)
{
StartWithSettings = true;
return;
}
else if (StartWithSettings == true)
{
StartWithSettings = false;
return;
}
else
StartWithSettings = null;
}
答案 0 :(得分:1)
绑定到属性的支持属性必须是bool?
类型才能支持 3状态复选框。确保支持字段设置为null。
此外,您不需要设置IsThreeState="True"
编辑:既然您提到了Windows 8.1,我认为这将是WinRT。
WinRT / Win8 Dev不支持Nullable类型。
解决方案是here