2014-07-07 4 views
2

오늘 새로운 내용을 배우고 누군가 XAML에서만이 작업을 수행 할 수있는 우아한 방법을 찾고 있습니다.RelativeSource 및 FindAncestor를 통해 트리에 도달하여 종속성 속성을 변경하십시오.

그래서 개념에 대해 다음 예제를 사용하십시오.

<Grid> 

    <ScrollViewer VerticalScrollbarVisibility="Auto"> 

     <Grid> 
     <Grid.Resources> 
      <Style TargetType="{RelativeSource Mode=FindAncestor, AncestorType=ScrollViewer}"> 
       <Setter Property="VerticalScrollbarVisibility" Value="Disabled"/> 
      </Style> 
     </Grid.Resources> 
     </Grid> 

    </ScrollViewer> 

</Grid> 

분명히 효과가 없지만 (역시 예상되지는 않지만), 내가 달성하고자하는 개념을 전달합니다. 별개의 UserControl이 하나의보기에 함께있을지라도 요소를 직접 대상으로 지정할 수는 없지만 런타임시 조상 종속성을 조작하기 위해 트리에 도달합니다.

Storyboard를 Loaded 이벤트에 던져서 DoubleAnimation 및 다른 시도를 사용하여 속성을 변경하려고 시도했지만 지금까지 아무런 즐거움도 없었 습니다만 이해하기 쉽지만 어쨌든 스킬 셋을 향상시키는 데 그쳤습니다. 저는 XAML로 순전히 그것을 성취하려고 노력하고 있습니다. 그리고 그것은 또 다른 한 쌍의 눈이 다른 경로를 제공 할 수있는 것 중 하나라고 확신합니다. 스토리 보드 방식이 때문에 VerticalScroll B arVisibility?

에서 오타가 될 수있다 (작동하지 않을 이유

답변

3

는 잘 모르겠어요 그 접근 방식에 변화는 내부 ChangePropertyAction를 사용하는 것 .

<Grid> 
    <i:Interaction.Triggers> 
     <i:EventTrigger EventName="Loaded"> 
      <ei:ChangePropertyAction 
       TargetObject="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=ScrollViewer}}" 
       PropertyName="VerticalScrollBarVisibility" 
       Value="Disabled" 
      /> 
     </i:EventTrigger> 
    </i:Interaction.Triggers> 
    </Grid> 

+0

D :로드 이벤트는 나는이 스크롤 막대를 사용하지 않도록하기 위해 노력하고 확인할 수 있습니다 오, 빌어 먹을 ... 다시 한 번 환호성. –