说我有这段代码
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":
...........
}
}
最好的方法是什么?
答案 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;
}
}