2016-04-21 48 views
0

我想显示复选框已加载不确定状态,而不是已选中/未选中状态。在CheckBox中无法获取不确定状态,使用Nullable布尔属性

代码段,

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代替空值。我不明白为什么。任何一个有助于通过使用SetBinding方法绑定代码后面的复选框的空值?

回答

1

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

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

这里是很好的解释bind to a nullable type文章由Jerrynixon wriiten有关这个问题和解决方案。

+0

感谢:-)我已经将此NullableCheckBox绑定到DataGrid Column的模板,如http://blog.jerrynixon.com/2014/07/lets-code-in-winrt-xaml-you-cannot.html中所述。当我试图排序该列,然后复选框(空)不确定值更改为True。我检查了调用堆栈,发现Native到托管代码转换,反之亦然。 – Smirti

+0

请更新问题以查找问题 – Archana

相关问题