C# 只有一些转换器着火了?
我在WPF的一个项目中工作,我有一个非常奇怪的案例,关于某个元素上的转换器 在以下代码段中:C# 只有一些转换器着火了?,c#,wpf,binding,ivalueconverter,C#,Wpf,Binding,Ivalueconverter,我在WPF的一个项目中工作,我有一个非常奇怪的案例,关于某个元素上的转换器 在以下代码段中: <myCtl:Pager IsTabStop="False" Style="{StaticResource MainPager}" DataContext="{Binding CurrentView, Converter={StaticResource SectionToPagerDriver}}" Visibility="{Bind
<myCtl:Pager IsTabStop="False" Style="{StaticResource MainPager}"
DataContext="{Binding CurrentView, Converter={StaticResource SectionToPagerDriver}}"
Visibility="{Binding CurrentView, Converter={StaticResource SectionToVisibility}}"/>
“DataContext”的转换器将启动,但“Visibility”的转换器不会启动。这对我来说似乎很奇怪,因为他们都被“CurrentView”所约束,而“CurrentView”确实发生了变化。我甚至尝试过将绑定模式显式设置为“双向”,但这并不能解决问题
有人知道为什么一个绑定会启动,而另一个不会启动吗?当您在
控件上设置DataContext
时,所有其他绑定都将使用新对象作为源
如果您检查输出窗口,您将看到一个绑定错误,表明该属性返回的任何对象上都没有CurrentView
属性
相反,您只需执行以下操作:
<myCtl:Pager IsTabStop="False" Style="{StaticResource MainPager}"
DataContext="{Binding CurrentView, Converter={StaticResource SectionToPagerDriver}}"
Visibility="{Binding Converter={StaticResource SectionToVisibility}}"/>
如果您注释掉DataContext
部分:DataContext=“{Binding CurrentView,Converter={StaticResource SectionToPagerDriver}}”
,是否将SectionToVisibility
fire?将其设置为高和低test@Bolu不,它自己甚至不会开火。你说对了一半。通过删除“CurrentView”,我获得了正确的行为,但在原始案例中没有报告绑定错误。(否则我会想出来)这很奇怪。可能是因为绑定在DataContext
更改之前是有效的。