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();
        }
    }
}

私が抱えている問題は、Helloworld_ringボタンのクリックでsetEvent関数を実行すると、すべてが正常に機能することです。これらのボタンを削除してHelloworld関数でHoldイベントを使用しようとすると、エラーが発生します

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

私が理解していることは、まったく説明のつかないことです。私が気付いている問題は、デバッグ中にsetSrcButton変数がe.OriginalSourceの値を取得していないことですが、これはHelloworldでHoldイベントを使用した場合にのみ発生します。Helloworld_ringでClickイベントを使用すると、すべてが正常に機能します。

すべての助けに感謝します。ありがとうございました :)

4

1 に答える 1

0

おそらくe.OriginalSourceはあなたのボタンではありません。

この場合、送信者がボタンになるはずなので、代わりにそれを試してください。

 setSrcButton = sender as Button;
于 2013-02-19T09:43:28.607 に答える