我正在研究WPF中的一个项目,我对某个元素上的转换器有一个非常奇怪的例子。
在以下代码段中:
<myCtl:Pager IsTabStop="False" Style="{StaticResource MainPager}"
DataContext="{Binding CurrentView, Converter={StaticResource SectionToPagerDriver}}"
Visibility="{Binding CurrentView, Converter={StaticResource SectionToVisibility}}"/>
“DataContext”的转换器将会触发,但“可见性”的转换器不会触发。考虑到它们都与'CurrentView'绑定,确实发生变化,这对我来说似乎很奇怪。我甚至尝试将绑定模式明确地设置为'TwoWay',但这没有解决问题。
有没有人知道为什么一个绑定会触发,而另一个绑定不会?
答案 0 :(得分:0)
当您在DataContext
上设置Control
时,所有其他绑定都将使用新对象作为其来源。
如果检查输出窗口,您将看到一个绑定错误,指出该属性返回的任何对象都没有CurrentView
属性。
相反,你应该这样做:
<myCtl:Pager IsTabStop="False" Style="{StaticResource MainPager}"
DataContext="{Binding CurrentView, Converter={StaticResource SectionToPagerDriver}}"
Visibility="{Binding Converter={StaticResource SectionToVisibility}}"/>