Zugriff auf XAML-Steuerelemente in DataTemplate über CodeBehind?

Ich habe ein Steuerelement, auf das ich im Codebehind nicht zugreifen kann, und ich glaube, es liegt daran, dass es in einer DataTempalte definiert ist.

Die Gesamtsteuerung ist ein Diashow-Karussell. Jede Folie kann ein Bild oder ein MediaElement (Video) sein, dessen Inhalt in einer ItemSource-Bindung definiert ist. Das Karussell hat eine Zeitschaltuhr, um von einer Folie zur nächsten zu wechseln. Jedes Mal, wenn sich die Folie ändert, feuere ich ein entsprechendes Ereignis ab.

Wenn ich mit einem Video auf eine Folie stoße, möchte ich den Dia-Timer anhalten und das Video starten, bei dem ich auf ein Problem gestoßen bin. Ich kann nicht auf die zugreifenMediaPlayer ElementName von meinem Codebehind. An dieser Stelle gehe ich davon aus, dass es sich um ein DataTemplate handelt.

Ist diese Annahme richtig? Wenn ja, wie kann ich vom Codebehind aus auf dieses Steuerelement zugreifen oder (genauer gesagt) die Wiedergabe starten, wenn die Folie geöffnet wird?

<ctrl:AutoScrollCarousel ...>
    <ctrl:AutoScrollCarousel.ItemsPanel>
        <ItemsPanelTemplate>
            <StackPanel Orientation="Horizontal" />
        </ItemsPanelTemplate>
    </ctrl:AutoScrollCarousel.ItemsPanel>
    <ctrl:AutoScrollCarousel.ItemTemplate>
        <DataTemplate>
            <Border x:Name="Border" VerticalAlignment="Center"
                    Width="{Binding ActualWidth, RelativeSource={RelativeSource AncestorType={x:Type UserControl},Mode=FindAncestor}}">
                <Grid Background="White">
                    ...
                    <Image Source="{Binding ContentImage}" Grid.Row="1" Grid.Column="1" Stretch="UniformToFill"
                            HorizontalAlignment="Center"
                            Visibility="{Binding ContentImage, Converter={StaticResource VisibilityConverter}}" />

                    <MediaElement Name="MediaPlayer" Source="{Binding ContentVideo}" Grid.Row="1" Grid.Column="1" Stretch="UniformToFill" LoadedBehavior="Play"
                                    Visibility="{Binding ContentVideo, Converter={StaticResource VisibilityConverter}}" MediaEnded="MediaPlayer_MediaEnded" />

                    <TextBlock Grid.Row="0" Grid.Column="1" Text="{Binding Title}" Foreground="Black"
                                FontFamily="Segoe UI" FontWeight="Light" HorizontalAlignment="Left" FontSize="75" Margin="0" VerticalAlignment="Center" />

                    <TextBlock Grid.Row="2" Grid.Column="1" Text="{Binding ContentHeadline}" Foreground="Black"
                                FontFamily="Segoe UI" FontWeight="Light" HorizontalAlignment="Left" FontSize="50" VerticalAlignment="Center"
                                TextWrapping="Wrap">
                    </TextBlock>
                </Grid>
            </Border>
        </DataTemplate>
    </ctrl:AutoScrollCarousel.ItemTemplate>
</ctrl:AutoScrollCarousel>

Antworten auf die Frage(2)

Ihre Antwort auf die Frage