コンテキスト:
Visual Studio 2012 Express for Windows Phone (Update 2) 公式テンプレート Panorama (Windows Phone OS 7.1) に基づくプロジェクト ビルド
問題:
WP8 ではすべてのコードが正常に動作しますが、WP7.8 と WP7.1 では ViewModel をビューにバインドできないようです。と、調べてみると。問題が見つかりました。
コード:
私のビューのコード ビハインドでは、以下のコードを使用してビュー モデルをビューにバインドします。
public MainPage()
{
InitializeComponent();
this.DataContext = new pageViewModel();
}
WP7.8以下で、ListBoxにバインドするプロパティが異常な場合、その値が
式を評価できませんでした
しかし、WP8では大丈夫です。
このプロパティに関連するコードは、ViewModel の下にあります。
ObservableCollection<MyClass> tmpClass = new ObservableCollection<MyClass>();
tmpClass = JsonConvert.DeserializeObject<ObservableCollection<MyClass>>(callbackjsonstring);
this.propertyA = tmpClass;
それを解決する方法は?
もう少し掘り下げる:
tmpClass の初期化にブレークポイントを設定しました。WP7 と WP8 で 2 つの異なる結果が見つかりました。これが問題だと思います。
WP8:
コードを実行した後、イミディエイト ウィンドウに「tmpClass」と入力すると、次のように表示されます。
カウント = 0;
WP7で:
コードを実行した後、イミディエイト ウィンドウに「tmpClass」と入力すると、次のように表示されます。
{System.Collections.ObjectModel.ObservableCollection} ベース {System.Collections.ObjectModel.Collection}: {System.Collections.ObjectModel.ObservableCollection} _busy: false CollectionChanged: null PropertyChanged: null