Доступ к элементу управления XAML в DataTemplate из CodeBehind?
У меня есть элемент управления, к которому я не могу получить доступ в коде, и я верю, что это потому, что он определен в DataTempalte.
Общий контроль - карусель слайд-шоу. Каждый слайд может быть изображением или MediaElement (видео), содержимое которого определяется в привязке ItemSource. Карусель находится на таймере для переключения с одного слайда на другой. Каждый раз, когда слайд меняется, я запускаю событие с таким эффектом.
Когда я нажимаю на слайд с видео, я хотел бы остановить таймер слайдов (сделал это) и запустить видео, где я столкнулся с проблемой. Я не могу получить доступ кMediaPlayer
элементName
из моего кода Мое предположение на данный момент, потому что это DataTemplate.
Это предположение верно? Если да, то как я могу получить доступ к этому элементу управления из-за кода или (более конкретно), чтобы он начал воспроизводиться, когда появляется слайд?
<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>