2011-02-04 2 views
5

부울 속성을보기의 가시성 속성에 바인딩하는 데 이상한 문제가 있습니다.보기의 가시성 속성을 조정하지 않음

다른보기뿐만 아니라 단추, 텍스트 상자, 격자, StackPanels 및 일부 telerik 컨트롤을 비롯한 다양한 다른 UIElements가 포함 된 '기본'보기가 있습니다. 컨트롤 중 일부는 내 ViewModel의 부울 속성에 바인딩 된 가시성을 가지므로 속성이 양수인 경우에는 표시되고 음수 인 경우에는 축소됩니다.

<Border Visibility="{Binding IsSectionShown, 
       Converter={StaticResource BoolToVisibilityConverter}}" > 

이것은 완벽하게 작동합니다. 명백한 나는 IsSectionShown 세터에서 알림 이벤트를 트리거하고 컨트롤의 가시성이 그에 따라 조정됩니다.

이제 가시성을 조정해야하는보기가 생겼습니다. 분명한 구현은

<vw:ActivityView DataContext="{Binding Activity}" 
       Visibility="{Binding IsPositive, 
         Converter={StaticResource BoolToVisibilityConverter}}" /> 

작동하지 않습니다! 내 작품은 주위에 StackPanel의 내부에 내 시야를 감싸고 StackPanel의의 가시성을 조정하는 것입니다 - 이것은 잘 작동 :

<StackPanel Visibility="{Binding IsPositive, 
       Converter={StaticResource BoolToVisibilityConverter}}"> 
    <vw:ActivityView DataContext="{Binding Activity}" /> 
</StackPanel> 

어떤 아이디어 왜 이런 일이에 관해서는? 해결 방법은 괜찮지 만 이해의 차이를 밝힙니다.

답변

2

이 두 가지 모두 작동하려면 속성이 Activity 안에 있고 Activity이 오는 데이터 컨텍스트에서 한 수준 위로 있어야합니다. 그러나 그것은 아마도 당신이 의도 한 것이 아닙니다. 가시성은 뷰 자체에 적용되는 것과 다른 데이터 컨텍스트에서 제공하도록하는 대신,이 같은 것을 사용할 수 있습니다 ParentElementvw:ActivityView을 포함하는 부모 요소입니다

<vw:ActivityView DataContext="{Binding Activity}" 
       Visibility="{Binding IsPositive, ElementName=ParentElement, 
         Converter={StaticResource BoolToVisibilityConverter}}" /> 

.

+0

물론! 감사 –

관련 문제