2010-03-04 4 views
0

Je dois accéder à l'élément nommé "PageHost" pour l'élément de liste sélectionné dans le code XAML suivant de C# codebehind, comment faire s'il vous plaît?WPF: Comment accéder à Element dans 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> 

Répondre

0

je suppose que fonctionne l'idée ci-dessous, bien que je ne suis pas vérifié le code. Vous devez d'abord trouver le ContentPresenter associé à l'objet SelectedItem, puis utiliser le DataTemplate pour trouver la pageHost

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