2014-07-07 33 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> 

这显然是不行的(也不是太预期),但...它传达FO想什么,我要完成的概念。在运行时达到树操作Ancestors Dependencies而不能直接定位元素,即使它们可能在单独的UserControl中被集中在一个视图中。

我试着在一个Loaded事件中抛出一个Storyboard来改变DoubleAnimation和其他一些尝试的属性,但目前为止没有任何喜悦,这是可以理解的,但它无论如何都只是为了改进技能。我试图纯粹用XAML来实现它,我相信这只是另一双眼睛可以提供不同路线的其中一件事。

回答

3

我不知道为什么你的故事板的做法是行不通的(难道是因为在VerticalScroll arVisibility?

错字关于这一方法的一个变化是使用一个ChangePropertyAction内。Loaded事件我可以证实这个作品以禁用滚动条:

<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哦,该死的......再次欢呼起来。 –