2014-07-07 65 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哦,該死的......再次歡呼起來。 –