2013-02-19 5 views
0

Вот мой XAML:Нажмите против Удержание Удержание вызывает синтаксическую ошибку

    <Button x:Name = "Helloworld" 
         Content = "Hello world" 
         Grid.Column = "0" 
         Grid.Row = "0" 
         Click="playEvent" 
         Hold="setEvent" 
         Tag="/Sounds/helloworld.mp3" 
        /> 
        <Button x:Name = "Helloworld_ring" 
         Grid.Column = "1" 
         Grid.Row = "0" 
         HorizontalAlignment="Stretch" 
         VerticalAlignment="Stretch" 
         Click="setEvent" 
         Tag="/Sounds/helloworld.mp3"> 
         <Image Source="/Images/note.png" Stretch="Fill" Height="30" Width="30" /> 
        </Button> 

И код позади, как так:

namespace MyApp 
{ 
    public partial class MainPage : PhoneApplicationPage 
    { 
     Button playSrcButton; 
     Button setSrcButton; 
     SaveRingtoneTask saveRingtoneChooser; 

     public MainPage() 
     { 
      InitializeComponent(); 

      saveRingtoneChooser = new SaveRingtoneTask(); 
      saveRingtoneChooser.Completed += new EventHandler<TaskEventArgs>(saveRingtoneChooser_Completed); 
     } 

     private void playEvent(object sender, RoutedEventArgs e) 
     { 
      playSrcButton = e.OriginalSource as Button; 
      playFile(playSrcButton.Tag.ToString(), playSrcButton.Content.ToString()); 
     } 

     private void setEvent(object sender, RoutedEventArgs e) 
     { 
      setSrcButton = e.OriginalSource as Button; 
      saveRingtoneChooser.Source = new Uri(setSrcButton.Tag.ToString()); 
      saveRingtoneChooser.DisplayName = setSrcButton.Content.ToString(); 
      saveRingtoneChooser.Show(); 
     } 
    } 
} 

Проблема, которую я имею, что если я ставлю функцию SetEvent к происходят по щелчку кнопки Helloworld_ring, тогда все работает нормально. Если я пытаюсь устранить эти кнопки и использовать событие удержания на функцию HelloWorld я получаю ошибку

An unhandled exception of type 'System.NullReferenceException' occurred in MyApp.dll 

Что я понимаю, довольно невзрачный. Проблема, которую я замечаю, заключается в том, что во время отладки setSrcButton переменная не получает значение e.OriginalSource, но это только происходит, когда я использую событие Hold на Helloworld. Когда я использую событие Click на Helloworld_ring, все работает отлично.

Вся помощь приветствуется. Спасибо :)

ответ

0

Возможно, e.OriginalSource - это не ваша кнопка.

В этом случае отправитель должен быть вашей кнопкой, поэтому попробуйте это вместо этого.

setSrcButton = sender as Button; 
+0

Хотя я хочу, чтобы кто-то объяснил, почему это так, я очень ценю ответ. Он работает сейчас. Спасибо! – Tibblez

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