繁体   English   中英

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

[英]PhotoChooserTask how to pass extra parameter Windows Phone

说我有这个代码

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":
          ...........   

    }
}

最好的方法是什么?

您正在寻找什么是不可能的。 但是,您可以在页面上添加字符串标记属性。 由于一次只能运行一个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;
        }
    }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM