WP7 Создание пользовательского выбора / задачи - PullRequest
1 голос
/ 26 мая 2011

Кто-нибудь знает, как создать собственный выбор? По сути, я хочу перейти на страницу, выбрать некоторые данные на этой странице и вернуть объект через некоторый EventArg.

Что-то похожее на то, как теперь работают задачи / селекторы в WP7, где я могу сделать:

CustomChooserTask task = new CustomChooserTask();
task.Completed += new EventHandler<CustomResult>(task_Completed);
task.Show();

Ответы [ 2 ]

2 голосов
/ 26 мая 2011

Выбор не является правильным подходом к тому, что вы пытаетесь сделать.

Задачи / Средства запуска / Выборы - это средство, позволяющее вашему приложению взаимодействовать с основными функциями телефона, позволяя пользователюбыть ясно о том, что происходит.

Поскольку вы не взаимодействуете с основными функциями или данными телефона, создание чего-то, что пытается имитировать это, может сбивать с толку.

Простой подход к вашему требованию состоит в том, чтобы иметьглобальная переменная (или эквивалентная) и запустившая страница (выбора) заполняет эту переменнуюВернувшись на исходную (запрашивающую) страницу, он может проверить глобальную переменную.К сожалению, нет способа передать данные обратно между страницами таким образом.(По крайней мере, без особой креативности в манипуляциях с backstack.)

Кроме того, вы можете посмотреть, как работает ListPicker в Toolkit , и реализовать что-то подобное.

1 голос
/ 11 февраля 2012

Я знаю, что это немного старо, и другие говорили, что это не очень хорошая идея. Но я верю, что бывают времена, когда возможность реализовать 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);
    }


}
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...