三个状态复选框初始绑定Windows应用商店App / RT

时间:2014-09-23 14:18:17

标签: wpf checkbox windows-store-apps windows-rt

我的复选框在启动时没有正确绑定初始值:

<CheckBox IsThreeState="True" IsChecked="{Binding StartWithSettings,Mode=TwoWay}"/>

复选框在启动时显示为空,但应该为空(带有黑色方框的框)。

Getter在启动时正常引发null,我缺少什么?

编辑:

您可以在下面找到我的viewmodel,型号代码和一个用于切换复选框的所有三种状态的按钮。在null状态和false状态之间切换时会发生奇怪的事情 - &gt;它始终显示false复选框,无论是null还是false,但基础数据都是正确的。

我通过单击复选框本身直接切换复选框状态,所有三种状态都正确显示。

这是一个Windows 8.1商店应用程序,也许wpf复选框控件不是“通常”的wpf复选框,并有一个错误?

viewmodel片段:

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;

}

1 个答案:

答案 0 :(得分:1)

绑定到属性的支持属性必须是bool?类型才能支持 3状态复选框。确保支持字段设置为null。

此外,您不需要设置IsThreeState="True"

编辑:既然您提到了Windows 8.1,我认为这将是WinRT。

WinRT / Win8 Dev不支持Nullable类型。

解决方案是here