Проблема в связывании текста с (Rx и Windows Phone) - PullRequest
0 голосов
/ 07 марта 2012

В моем приложении я использую реактивные расширения для веб-запроса.В чем моя проблема, я делаю два запроса.В первом запросе я получу URL-адрес сервера и, используя этот URL-адрес, отправляю другой запрос на получение изображения и описания.В моем первом запросе кроме URL я получу информацию, связанную с названием и датой.Так что я делаю, я буду анализировать данные в моем классе модели, и оттуда я вызову другой запрос.Здесь, когда я получу ответ, я добавлю это в мой объект класса, который может содержать результат.И когда будет достигнута полная (onnext, error, complete) часть моего первого запроса, я получу оба результата в моей собственности.Но проблема в том, что соответствующее изменение, то есть результат второго веб-запроса, не отражается на моем пользовательском интерфейсе.Пожалуйста, помогите мне избежать этой проблемы.

Ответы [ 2 ]

3 голосов
/ 09 марта 2012

Вот как я бы структурировал ваш код - это не полное решение, так как вам нужно будет немного заполнить пробелы - но это должно упростить его.

Я начал с предположения, что у вас будут такие классы:

public class X
{
    public Uri Uri { get; set; }
    public string Title { get; set; }
    public DateTime Date { get; set; }
}

public class Y
{
    public System.Drawing.Image Image { get; set; }
    public string Description { get; set; }
}

public class Z
{
    public Uri Uri { get; set; }
    public string Title { get; set; }
    public DateTime Date { get; set; }
    public System.Drawing.Image Image { get; set; }
    public string Description { get; set; }
}

Теперь я создал эти две функции:

Func<IObservable<X>> getX =
    () =>
        {
            /* you must write this code */
        };

Func<X, IObservable<Y>> getYFromX =
    x =>
        {
            /* you must write this code */
        };

Они представляют две части вашего кода.

Вот как их объединить:

IObservable<Z> getZ =
    from x in getX()
    from y in getYFromX(x)
    select new Z()
    {
        Uri = x.Uri,
        Title = x.Title,
        Date = x.Date,
        Image = y.Image,
        Description = y.Description,
    };

Магия Rx, использующая SelectMany, объединяет две ваши части. Надеюсь, вам будет проще определить функции getX & getYFromX.

0 голосов
/ 07 марта 2012

Вы а) возвращаетесь к потоку пользовательского интерфейса, используя ObserveOnDispatcher()? и б) повышение INotifyPropertyChanged.PropertyChanged событий в свойствах класса, который вы устанавливаете как DataContext?

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