WPF: Как получить доступ к элементу в ListView.ItemTemplate? - PullRequest
0 голосов
/ 04 марта 2010

Мне нужен доступ к элементу с именем «PageHost» для выбранного элемента списка в следующем коде XAML из кода C #, как это сделать, пожалуйста?

        <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>

1 Ответ

0 голосов
/ 04 марта 2010

Полагаю, что приведенная ниже идея сработает, хотя я не проверял код. Вам нужно сначала найти ContentPresenter, связанный с SelectedItem, а затем с помощью DataTemplate мы можем узнать страницуHost

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