Windows Phone 8 と Windows ストアで利用できるアプリを開発しています。冗長性を減らすために、ポータブル クラス ライブラリ (PCL) を使用しています。その上で、MVVM Light PCL Toolkit を使用して MVVM パターンを適用しようとしています。ViewModel は PCL に配置され、アプリ ページの XAML に直接バインドされます。
データがエラーなしで受信されると、すべて正常に動作します。しかし、エラーが発生したときに例外/エラー メッセージをアプリに戻す方法がわかりません。
Windows ストア アプリ内ではエラーが MessageDialog として表示されますが、Wp8 アプリは MessageBox クラスを使用します。明らかに、PCL はこれらのクラスを認識していません。私が得ていないのは、ViewModel でエラーが発生したかどうかを知る方法と、アプリ内でメッセージを取得する方法です。ViewModels が XAML 内にバインドされている場合でも、これは可能ですか?
ViewModel (PCL 内)のコードは次のようになります。
DataService.Authenticate((token, error) =>
{
if (error != null)
{
// This is, obviously, not going to work.
MessageBox.Show(error.Message);
return;
}
Token = token;
});
したがって、何らかの方法でエラーを保存し、アプリ自体にエラーが発生したことを知らせてから、ユーザーにエラーを表示する一致する方法を呼び出す必要があります。
現在、BaseViewModel 内でエラー プロパティを定義し、ViewModel でエラーが発生したときにそれを埋めるようなことを考えています。次に、ページの CodeBehind で、現在の ViewModel を認識させ、PropertyChanged イベントをこの Error プロパティにバインドします。しかし、まだ実装できていないので、これが正しい方法であるかどうかはわかりません。
XAML 内で ViewModel をバインドするという考えから降りる必要がありますか? 代わりに、ページの分離コード内でそれらを初期化する必要がありますか?