访问列表框wp7中的mediaelement

本文关键字:中的 mediaelement wp7 列表 访问 | 更新日期: 2023-09-27 18:04:29

我在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>

访问列表框wp7中的mediaelement

有两种方法可以当场完成(可能还有更多)。你将需要一个指针指向你的按钮,无论如何点击:

  1. [困难,不灵活,脆弱]在按钮单击事件处理程序使用VisualTreeHelper类导航可视化树并找到元素。使用sender作为起始点
  2. [更好的解决方案]使用Tag属性和绑定。

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

在handler中是这样的:

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