2

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

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

Binding.DoNothing文档清楚地表明不使用后备值(尽管我不是 100% 确定如何解释“例如”)。关于这个主题的其他答案也有同样的假设。

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

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

4

1 回答 1

0

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

Wpf 首先处理 Binding,此时 ActualHeight 为零,然后 wpf 测量控件,然后 wpf 设置 ActualHeight 值,因为在测量之后它知道控件获得了多少空间。

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

忽略这一点。无论如何都不需要在输出窗口中显示这些信息。如果您关闭所有这些信息显示,您的应用程序将在调试模式下执行得更好。

于 2013-10-08T19:52:32.333 回答