只有一些转换器发射?

时间:2013-07-02 14:08:58

标签: c# wpf binding ivalueconverter

我正在研究WPF中的一个项目,我对某个元素上的转换器有一个非常奇怪的例子。

在以下代码段中:

<myCtl:Pager IsTabStop="False" Style="{StaticResource MainPager}"
                DataContext="{Binding CurrentView, Converter={StaticResource SectionToPagerDriver}}"
                Visibility="{Binding CurrentView, Converter={StaticResource SectionToVisibility}}"/>

“DataContext”的转换器将会触发,但“可见性”的转换器不会触发。考虑到它们都与'CurrentView'绑定,确实发生变化,这对我来说似乎很奇怪。我甚至尝试将绑定模式明确地设置为'TwoWay',但这没有解决问题。

有没有人知道为什么一个绑定会触发,而另一个绑定不会?

1 个答案:

答案 0 :(得分:0)

当您在DataContext上设置Control时,所有其他绑定都将使用新对象作为其来源。

如果检查输出窗口,您将看到一个绑定错误,指出该属性返回的任何对象都没有CurrentView属性。

相反,你应该这样做:

<myCtl:Pager IsTabStop="False" Style="{StaticResource MainPager}"
             DataContext="{Binding CurrentView, Converter={StaticResource SectionToPagerDriver}}"
             Visibility="{Binding Converter={StaticResource SectionToVisibility}}"/>