2016-12-17 83 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定义的细节是在未来版本中可能会改变的实现细节,并且不应该依赖外部元素。

相关问题