Я знаю, что это немного старо, и другие говорили, что это не очень хорошая идея. Но я верю, что бывают времена, когда возможность реализовать choosertask полезна. Один очевидный пример для меня - это если вы хотите, чтобы пользователь выбрал фотографию из библиотеки, сделал снимок или нарисовал что-то на экране.
Все они должны возвращать один и тот же результат, но у вашего собственного рисунка нет выбора. Так что реализация одного было бы хорошо, чтобы ваш код был простым. у вас есть заявление о кейсе, в котором указано, что выбрать для активации.
в любом случае вот код, который я написал для создания пользовательской задачи выбора (она не завершена на 100%, но должна дать вам представление):
using System;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Ink;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
using Microsoft.Phone.Tasks;
using System.Windows.Controls.Primitives;
namespace tasks {
public class imageResult : TaskEventArgs {
public System.IO.Stream image { get; set; }
}
public class imageChooserTask : ChooserBase<imageResult> {
public override void Show() {
Popup p = new Popup();
p.IsOpen = true;
imageSelector cs = new imageSelector();
p.Child = cs;
p.Closed += new EventHandler(p_Closed);
}
void p_Closed(object sender, EventArgs e) {
Popup p = sender as Popup;
TaskResult tr = (TaskResult)p.Tag;
//some logic to add stream
FireCompleted(sender, new imageResult(), null);
}
}
}