0

私のアプリケーションでは、リアクティブな拡張機能を使ってWebリクエストを行っています。私の問題は、私は2つの要求をしています。最初のリクエストで、私はサーバーからURLを取得し、そのURLを使用して、イメージと説明を取得する別のリクエストを送信しています。私の最初の要求では、私はタイトルと日付関連の情報を取得します。私がやっていることは、私のモデルクラスのデータを解析し、そこから別のリクエストを呼び出すことです。ここで私は応答を受け取ったときに、結果を保持できるクラスオブジェクトにそれを追加します。私の最初の要求の完全な(onnext、error、complete)部分が私に達すると、私の財産の両方の結果が得られます。しかし、問題は対応する変更、つまり2番目のWebリクエストの結果が自分のUIに反映されていないことです。この問題を避けるために誰も助けてください。(Rxとwindows Phoneで)テキストをバインドする問題

+0

両方のリクエストをまとめて1つのクエリにするには、 'SelectMany'コールを使用していますか? – Enigmativity

+0

いいえ私はSelect Manyを使っていません...私の問題は最初のリクエストの結果であり、それはuiを反映していると思います。それ以降は2番目のreqが来ています。 SpComはOnCompletedで結果を見ることができます。しかし、私はそれを解決しません..私は解決策を探しています.. OnCompletedの値を再割り当てすると一時的に私の問題は解決しますが、それは私が探している修正ではないと思います..あなたは解決するためにこの問題? –

答えて

3

コードを構造化する方法は次のとおりです。空白を少し埋める必要があるため、完全な解決策ではありませんが、簡単にする必要があります。私はあなたがこのようなクラスを持っているでしょう前提で開始

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; } 
} 

は今、私はこの2つの関数を作成しました:

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

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

は、彼らはあなたのコードの2つの部分を表しています。

はここでそれらを一緒に参加する方法は次のとおりです。

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, 
    }; 

ここSelectManyを使ったRx魔法は一緒にあなたの二つのサブ部分を結合します。うまくいけば、getX & getYFromXの機能を定義する方が簡単になるでしょう。

0

あなたは)ObserveOnDispatcher()を使用してUIスレッドに戻りますか? b)DataContextとして設定しているクラスのプロパティでINotifyPropertyChanged.PropertyChangedイベントを発生させる?

+0

階層は次のようなものです MainViewModelでは、モデルタイプとしてクラスタイプを使用してプロパティを追加しました。私のmainviewmodelでは、私はINotifyPropertyChangedを実装しました。うん、私はディスパッチャーで観測を使用しています。 –

+0

@NithaPaul - リクエストは間違いなく完了していますか?オブジェクトグラフを表示されていないプロパティ(例えば、 'MainViewModel.Something.Title')に記述することはできますか? –

+0

私は自分の問題が最初のリクエストの結果であると思うし、ui ..を反映します。それ以降は2番目のreqが来ています。 SpComはOnCompletedで結果を見ることができます。しかし、私はそれを解決しません..私は解決策を探しています.. OnCompletedの値を再割り当てすると一時的に私の問題は解決しますが、それは私が探している修正ではないと思います..あなたは解決するためにこの問題? –

関連する問題