c# – 当使用传统绑定时,为什么bool在没有转换器的情况下工作

我之前和之前创建并使用bool到可见性转换器,我忘了在绑定上使用转换器(我正在使用传统绑定).我将视图中控件的visibility属性绑定到视图模型中的bool属性,令人惊讶的是它可以工作.所以我的问题是,如果它适用于传统绑定,为什么我们需要使用转换器?因为看起来编译器正在为我做转换.

我在Visual Studio Update 3中的UWP应用程序上测试了它.
最低应用目标是10.0.10586
目标版本是10.0.14393

解决方法

有趣.这一直是一种痛苦,似乎没有太多宣传就修好了,我不知道这一点.

WPF中,您总是必须使用ValueConverter,因为Visibility不是bool.

我刚从项目中的{x:Bind …}中删除一个BooleanToVisibility转换,但它确实仍然有效.我从生成代码中挖出了这个:

private void Update_viewmodel_ShowMessage(global::System.Boolean obj,int phase)            
{
  ...
  this.Update_viewmodel_ShowMessage_Cast_ShowMessage_To_Visibility(
    obj ? global::Windows.UI.Xaml.Visibility.Visible 
        : global::Windows.UI.Xaml.Visibility.Collapsed,phase);
...
}

显然它现在已经内置了.

更新:

对于{x:Bind},它作为周年纪念更新的一部分宣布了here.而你确实需要针对14393或更高版本.对于旧版本,它仅适用于{Binding …}.

相关文章

原文地址:http://msdn.microsoft.com/en-us/magazine/cc163...
前言 随着近些年微服务的流行,有越来越多的开发者和团队所采...
最近因为比较忙,好久没有写博客了,这篇主要给大家分享一下...
在多核CPU在今天和不久的将来,计算机将拥有更多的内核,Mic...
c语言输入成绩怎么判断等级
字符型数据在内存中的存储形式是什么