不确定状态不会在具有可为空的布尔属性的复选框中获取

本文关键字:布尔 属性 复选框 获取 状态 不确定 | 更新日期: 2024-10-25 21:47:33

我想显示复选框加载时具有不确定状态,而不是选中/未选中状态。

代码片段,

private bool? nullCheck = null;
    public bool? NullCheck
    {
        get { return nullCheck; }
        set { nullCheck = value;  }
    }

 <CheckBox  IsChecked="{x:Bind Path=NullCheck}" IsThreeState="True"/>

然后复选框以不确定状态加载。

当我在代码后面设置绑定时,如下所示,

<CheckBox  Loaded="CheckBox_Loaded" IsThreeState="True"/>
 private void CheckBox_Loaded(object sender, RoutedEventArgs e)
    {
        var uiElement = sender as CheckBox;
        var binding = new Binding();
        binding.Path = new PropertyPath("NullCheck");
        uiElement.SetBinding(ToggleButton.IsCheckedProperty, binding);
    }

此处复选框 IsChecked 属性返回 false 而不是 null 值。我不明白为什么。任何人都可以通过使用 SetBinding 方法帮助绑定代码隐藏中的复选框的空值?

不确定状态不会在具有可为空的布尔属性的复选框中获取

WinRT/UWP 不支持绑定空值。它被控制忽略了。

对于解决方法,您可以对复选框进行子类化,并添加依赖项属性以支持可为空的绑定。

这里很好地解释了绑定到Jerrynixon与此问题和解决方案相关的可空类型文章。