2010-03-04 80 views
0

我需要从C#代码隐藏中访问以下XAML代码中所选列表项的名为“PageHost”的元素,请问该如何操作?WPF:如何访问ListView.ItemTemplate中的元素?

 <ListView.Resources> 
      <p:PageWidthConverter x:Key="PageWidthConverter" /> 
     </ListView.Resources> 
     <ListView.ItemTemplate> 
      <DataTemplate x:Name="PagesViewDataTemplate"> 
       <DataTemplate.Resources> 
        <Style x:Key="PageHostStyle" TargetType="{x:Type p:PageHost}"> 
         <Setter Property="Width" Value="{Binding Path=ActualWidth, 
                   Converter={StaticResource PageWidthConverter}, 
                   RelativeSource={RelativeSource Mode=FindAncestor, 
                   AncestorType={x:Type Grid}}}" 

           /> 
        </Style> 
       </DataTemplate.Resources> 
       <p:PageHost x:Name="PageHost"> 

       </p:PageHost> 
      </DataTemplate> 
     </ListView.ItemTemplate> 

     <ListView.ItemsPanel> 
      <ItemsPanelTemplate> 
       <WrapPanel Orientation="Horizontal" VerticalAlignment="Top"> 
        <WrapPanel.LayoutTransform> 
         <ScaleTransform ScaleX="1" ScaleY="1"></ScaleTransform> 
        </WrapPanel.LayoutTransform> 
       </WrapPanel> 
      </ItemsPanelTemplate> 
     </ListView.ItemsPanel> 
     <ListItem> 
     </ListItem> 
</ListView> 

回答

0

我猜下面的想法会工作,虽然我没有验证码。您需要首先找出与SelectedItem关联的ContentPresenter,然后使用DataTemplate我们可以找出页面主题

ContentPresenter lstContent = lstViewInstance.ItemContainerGenerator.ContainerFromIndex(lstViewInstance.SelectedIndex) as  ContentPresenter; 
DataTemplate pageViewDataTemplate= this.FindResource("PagesViewDataTemplate") as DataTemplate; 
PageHost pageHost = pageViewDataTemplate.FindName("PageHost", lstContent) as PageHost;