为什么Binding.DoNothing案例评估后备值

时间:2013-10-05 20:26:57

标签: wpf data-binding

在下面的代码示例中,从值转换器返回Binding.DoNothing仍会导致fallbackValue评估。注意背景。

<Style>
<Setter Property="FontSize" Value="{Binding ActualHeight, RelativeSource={RelativeSource self}, Converter={...DoNothingReturningConverter...}/>

Binding.DoNothing文档清楚地表明不使用回退值(尽管我不是100%确定如何解释'例如')。关于这个主题的其他answers假设同样多。

实际上,尝试进行回退值评估,以便在依赖项属性条目中设置表达式值。当评估样式应用于控件时,这与控制流的转换器部分不同。

我正在寻找有关这种微妙的DoNothing行为的任何其他信息。 在我看来,它是WPF 4.5中的一个错误,尽管它可以是设计: - )

1 个答案:

答案 0 :(得分:0)

啊,啊,现在我找到了你。这是有史以来最经典的绑定错误。实际上它不是一个错误它只是一个信息。它像一只痘痘youtube小猫一样有害。

Wpf首先处理绑定此时ActualHeight为零,然后wpf测量一个控件,然后wpf设置ActualHeight值,因为在测量后它知道控件得到多少空间。

但是当ActualHeight为零时你返回Binding.DoNothing,因此你得到的信息没有设置任何值。

请忽略它。无论如何都不需要在输出窗口中显示这样的信息。如果关闭所有显示的信息,您的应用程序将在调试模式下表现更好。