2012-04-06 3 views
0

У меня есть много .wav файлов для воспроизведения и из-за того, что я создал AudioItem класс:Windows Phone играть звук

public class AudioItem 
{ 
    public string SongName { get; set; } 
    public string SongText { get; set; } 

    public AudioItem() 
    { } 

    /// <summary> 
    /// Initialize AudioItem class 
    /// </summary> 
    /// <param name="SongName">The name of the song(with .wav)</param> 
    /// <param name="SongText">Text to display</param> 
    public AudioItem(string SongName, string SongText) 
    { 
     this.SongName = SongName; 
     this.SongText = SongText; 
    } 

    public void Play() 
    { 
     var stream = TitleContainer.OpenStream("Sound/" + SongName); 
     var effect = SoundEffect.FromStream(stream); 
     FrameworkDispatcher.Update(); 
     effect.Play(); 
    } 

} 

В представлении я есть Listbox пунктов:

<ListBox Name="soundtrackLbx"> 
       <ListBox.ItemTemplate> 
        <DataTemplate> 
         <Button Name="ListButton" HorizontalAlignment="Stretch" > 
          <Button.Content> 
           <StackPanel Orientation="Horizontal"> 
            <Image Margin="10" Height="30" Width="30" Source="Picture/audio.png"/> 
            <TextBlock Margin="10" HorizontalAlignment="Stretch" Text="{Binding SongText}" FontFamily="Verdana" Tap="TextBlock_Tap" /> 
           </StackPanel> 
          </Button.Content> 
         </Button> 
        </DataTemplate> 
       </ListBox.ItemTemplate> 
      </ListBox> 

мой код позади:

public ObservableCollection<AudioItem> AudioItems { get; set; } 

    public MainView() 
    { 
     InitializeComponent(); 
     AudioItems = new ObservableCollection<AudioItem>(); 

     Initialize(); 
     this.soundtrackLbx.ItemsSource = AudioItems; 
    } 

    private void Initialize() 
    { 
     AudioItems.Add(new AudioItem("ApsolutnoDa.wav", "Apsolutno da")); 
     AudioItems.Add(new AudioItem("Da.wav", "Da")); 

    } 

    private void TextBlock_Tap(object sender, GestureEventArgs e) 
    { 
     TextBlock tblock = sender as TextBlock; 
     string text = tblock.Text; 

     AudioItem item = AudioItems.SingleOrDefault(a => a.SongText == text); 
     item.Play(); 
    } 

ну, бывает .wav иногда я слышу, как они играют, а иногда я этого не делаю, и я не знаю, почему это так.

ответ

0

OK. Вот он, если кто-то попал в ловушку, как и я. Проблема состояла в том, что я установил событие Tap на Textblock, а не на Button.

Как получить контент от Button.Content?

Я использую tag собственности, и я связываю его с SongName.

Смежные вопросы