Доступ к медиаэлементу в списке wp7 - PullRequest
1 голос
/ 05 августа 2011

У меня есть MediaElement внутри ListBox. Как я могу получить доступ к «audiop_Copy» с помощью кнопок «play / pause»?

<local:TypeTemplateSelector.WithAudio>
  <DataTemplate>
    <Grid Margin="0,5">
      <Grid.ColumnDefinitions>
        <ColumnDefinition Width="Auto" />
        <ColumnDefinition Width="*"/>
      </Grid.ColumnDefinitions>
      <StackPanel Grid.Column="1">
        <TextBlock ... />
        <StackPanel Height="50" Orientation="Horizontal" Margin="5,0,4,0" MinHeight="50">
          </TextBlock>
          <Button Click="PlayMedia" Content="Play" />
          <Button Click="PauseMedia" Content="Pause" />
        </StackPanel>
        <MediaElement Name="audiop_Copy" Source="{Binding audioUri}" Stretch="None" HorizontalAlignment="Left" AutoPlay="False"/>
      </StackPanel>
    </Grid>
  </DataTemplate>
</local:TypeTemplateSelector.WithAudio>

1 Ответ

1 голос
/ 06 августа 2011

2 способа сделать это с места (возможно, есть и другие).Вам понадобится указатель на вашу кнопку, на которую все равно щелкнули:

  1. [сложно, негибко, хрупко] В кнопке Нажмите обработчик событий, используйте VisualTreeHelper класс для навигации по дереву визуалов и поискаэлемент.Используйте отправителя в качестве отправной точки
  2. [лучшее решение] используйте свойство Tag и привязку.

    <Button Click="PauseMedia" Content="Pause" Tag={Binding ElementName=audiop_Copy} />
    

А в обработчике что-то вроде этого:

private void PauseMedia(object sender, RoutedEventArgs e)
{
    var me = ((FrameworkElement) sender).Tag as MediaElement;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...