2013-07-02 3 views
0

Я работаю над проектом в WPF, и у меня очень странный случай относительно моих конвертеров на определенном элементе.Только некоторые преобразователи огня?

В следующем фрагменте:

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

Преобразователь для «» DataContext будет срабатывать, но конвертер для «Видимость» не будет. Мне кажется странным, что они оба связаны с «CurrentView», который действительно меняется. Я даже попытался установить режим привязки явно на «TwoWay», но это не делает ничего, чтобы решить проблему.

У кого-нибудь есть подсказка, почему одна привязка будет стрелять, а другая нет?

+0

если вы закомментировать 'DataContext' часть:' DataContext = "{Binding CurrentView, конвертер = {StaticResource SectionToPagerDriver}}" ',' будет SectionToVisibility' огонь ? – Bolu

+0

Установите это на высокий http://msdn.microsoft.com/en-us/library/system.diagnostics.presentationtracesources.tracelevel.aspx и тест – Paparazzi

+0

@Bolu Нет. Само по себе оно даже не срабатывает. –

ответ

0

Когда вы установите DataContext на Control, все остальные привязки будут использовать новый объект в качестве источника.

Если вы проверите окно вывода, вы увидите ошибку привязки, в которой говорится, что свойство CurrentView отсутствует в любом объекте, возвращаемом этим свойством.

Вместо этого вы должны просто сделать:

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

Вы наполовину правы. Удалив «CurrentView», я получаю правильное поведение, но в исходном случае нет ошибки привязки. (иначе я бы это понял) –

+0

Это странно. Возможно, это связано с тем, что 'Binding' действует до изменения DataContext. –

+0

Думаю, мы никогда не узнаем. –