我正在开发一个可用于 Windows Phone 8 和 Windows 应用商店的应用程序。为了减少冗余,我正在使用可移植类库(PCL),最重要的是,我正在尝试在 MVVM Light PCL 工具包的帮助下应用 MVVM 模式。ViewModel 放置在 PCL 中,并直接绑定在应用程序页面的 XAML 中。
当接收到数据没有错误时,一切正常。但是当错误发生时,我不知道如何将异常/错误消息返回给应用程序。
在 Windows Store App 中,错误将显示为 MessageDialog,而 Wp8 App 将使用 MessageBox 类。显然 PCL 不知道这些类中的任何一个。我没有得到的是如何知道 ViewModel 是否遇到错误,以及如何在 App 中获取消息。当 ViewModel 绑定在 XAML 中时,这甚至可能吗?
ViewModel (PCL 内部)中的代码如下所示:
DataService.Authenticate((token, error) =>
{
if (error != null)
{
// This is, obviously, not going to work.
MessageBox.Show(error.Message);
return;
}
Token = token;
});
所以我必须以某种方式保存错误并让App本身知道错误已经发生,然后调用匹配方式向用户显示错误。
目前我正在考虑在 BaseViewModel 中定义一个错误属性,并在 ViewModel 中发生错误时填充它。然后,在页面的 CodeBehind 中,让它们知道当前的 ViewModel 并将 PropertyChanged-event 绑定到此 Error-property。但是我还不能实现它,所以我不知道这是否是正确的方法。
我是否必须放弃在 XAML 中绑定 ViewModel 的想法,而是必须在 Codebehind 页面中初始化它们?