2013-07-02 5 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 = "{CurrentView 바인딩, 변환기 = {정적 리소스 SectionToPagerDriver}}"'것'SectionToVisibility' 화재 ? – Bolu

+0

이것을 최고로 설정하십시오. http://msdn.microsoft.com/en-us/library/system.diagnostics.presentationtracesources.tracelevel.aspx 및 – Paparazzi

+0

@Bolu 아니요. 그 자체로는 발사되지 않습니다. –

답변

0

ControlDataContext을 설정하면 다른 모든 바인딩은 새 개체를 원본으로 사용합니다.

출력 창을 확인하면 그 속성에 의해 반환되는 객체에 대해 CurrentView 속성이 없음을 나타내는 바인딩 오류가 표시됩니다.

대신, 당신은 단지 수행해야합니다

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

반갑습니다. 'CurrentView'를 제거하면 올바른 동작을 얻을 수 있지만 원래의 경우에는 Binding 오류가보고되지 않습니다. (그렇지 않으면 나는 그것을 알아낼 것이다) –

+0

그것은 이상하다. 아마도'Binding'이'DataContext'가 변경되기 전에 유효하기 때문일 수도 있습니다. –

+0

나는 결코 우리가 알지 못할 것이라고 생각한다. –