PhotoChooserTask如何传递额外的参数Windows Phone

时间:2014-05-05 05:13:48

标签: c# windows-phone-8

说我有这段代码

private void photoChooserBtn_Click(object sender, RoutedEventArgs e)
{
    photoChooserTask = new PhotoChooserTask();
    photoChooserTask.Completed += new EventHandler<PhotoResult (photoChooserTask_Completed);
    photoChooserTask.Show();
}

private void photoChooserTask_Completed(object sender, PhotoResult e)
{
    if (e.TaskResult == TaskResult.OK)
    {
         BitmapImage bmp = new BitmapImage();
         bmp.SetSource(e.ChosenPhoto);
         imagecontrol.Source = bmp;
    }
}

我必须多次重复此代码,因为我有几个按钮。我想避免这种情况。

我希望有一个按钮点击事件。然后将额外参数附加到photoChooserTask,以便我可以根据参数处理photoChooserTask_Completed事件中的结果。

所以在photoChooserBtn_Click事件中。我想做这样的事情。

Button btn = (Button)sender;
photoChooserTask.Tag = btn.Name;

然后

private void photoChooserTask_Completed(object sender, PhotoResult e)
{
    if (e.TaskResult == TaskResult.OK)
    {
         BitmapImage bmp = new BitmapImage();
         bmp.SetSource(e.ChosenPhoto);
         imagecontrol.Source = bmp;
         string param = ((PhotoChooserTask)sender).Tag;

         Switch (param)
         {
            case "bla":
            case "bla2":
          ...........   

    }
}

最好的方法是什么?

1 个答案:

答案 0 :(得分:0)

您正在寻找的是不可能的。但是,您可以向页面添加字符串标记属性。由于一次只能运行一个PhotoChooserTask,因此这种方法应该没问题。

public partial class MainPage : PhoneApplicationPage
{
    string tag;

    // Constructor
    public MainPage()
    {
        InitializeComponent();
    }

    private void photoChooserBtn_Click(object sender, RoutedEventArgs e)
    {
        photoChooserTask = new PhotoChooserTask();
        tag = (sender as Button).Name;
        photoChooserTask.Completed += new EventHandler<PhotoResult>(photoChooserTask_Completed);
        photoChooserTask.Show();
    }

    private void photoChooserTask_Completed(object sender, PhotoResult e)
    {
        if (e.TaskResult == TaskResult.OK)
        {
            BitmapImage bmp = new BitmapImage();
            bmp.SetSource(e.ChosenPhoto);
            imagecontrol.Source = bmp;

            switch(tag)
            {
                case tag1:
                case tag2:
                ........
            }

            tag = null;
        }
    }