在列表框wp7中访问mediaelement

时间:2011-08-04 22:27:50

标签: c# silverlight windows-phone-7

我在ListBox中有一个MediaElement。如何通过“播放/暂停”按钮访问“audiop_Copy”?

<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 个答案:

答案 0 :(得分:1)

从现场做两种方式(可能还有更多)。你需要一个指向你点击的Button的指针:

  1. [困难,不灵活,易碎]在按钮Click事件处理程序中,使用 VisualTreeHelper 类导航Visual Tree并查找元素。使用发件人作为起点
  2. [更好的解决方案]使用标签属性和绑定。

    <Button Click="PauseMedia" Content="Pause" Tag={Binding ElementName=audiop_Copy} />
    
  3. 在处理程序中有类似的东西:

    private void PauseMedia(object sender, RoutedEventArgs e)
    {
        var me = ((FrameworkElement) sender).Tag as MediaElement;
    }