2016-12-17 67 views
0

ListViewItemTemplate內,我可以訪問視覺樹中某處ScrollContentPresenterActualWidth屬性。在某些情況下,這很適合我:在XAML中,另一個元素如何訪問ListView的ScrollContentPresenter?

<ListView Name="MyListView"> 
    <ListView.ItemTemplate> 
     <DataTemplate> 
      <Grid> 
       <Grid.Width> 
        <Binding Path="ActualWidth" RelativeSource="{RelativeSource Mode=FindAncestor, AncestorType={x:Type ScrollContentPresenter}}" /> 
       </Grid.Width> 
       <!-- stuff goes here --> 
      </Grid> 
     </DataTemplate> 
    </ListView.ItemTemplate> 
</ListView> 

不過,我需要一些其他的XAML元素,它的寬度結合MyListView的ScrollContentPresenter的ActualWidth。如何完成這項工作,因爲ListView上沒有與該ScrollContentPresenter相對應的DependencyProperty?

回答

0

那怎麼可以實現,因爲沒有對應於該ScrollContentPresenter的ListView沒有的DependencyProperty?

簡答:它不能。

由於ScrollContentPresenter在ControlTemplate中「隱藏」,該ControlTemplate定義了ListView的可視化樹,因此ListView本身之外的任何元素都不能綁定到此ScrollContentPresenter的任何屬性。

如果其他元素以某種方式依賴於ScrollContentPresenter,則應該重新考慮您嘗試執行的操作,因爲綁定到控件的ControlTemplate一部分的元素是不可能的。

即使實際上是可能的,這樣做也不是個好主意,因爲ListView的ControlTemplate定義的細節是在未來版本中可能會改變的實現細節,並且不應該依賴外部元素。

相關問題