Acessar o controle XAML em DataTemplate de CodeBehind?
Eu tenho um controle que eu não consigo acessar no codebehind, e acredito que é porque é definido em um DataTempalte.
O controle geral é um carrossel de apresentação de slides. Cada slide pode ser uma imagem ou um MediaElement (vídeo), cujo conteúdo é definido em uma ligação ItemSource. O carrossel está em um temporizador para alternar de um slide para o próximo. Cada vez que o slide muda, disparo um evento para esse efeito.
Quando eu clico em um slide com um vídeo, eu gostaria de parar o cronômetro de slide (pronto) e iniciar o vídeo, que é onde eu me deparei com um problema. Eu não consigo acessar oMediaPlayer
elementoName
do meu codebehind. Minha suposição neste momento é porque é um DataTemplate.
Esta suposição é correta? Em caso afirmativo, como posso obter acesso a esse controle a partir do code-behind, ou (mais ao ponto) ele começou a tocar quando o slide aparece?
<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>