我正在使用 MVVM Toolkit 构建我的 WP7 应用程序,如果 WCF 服务失败,我正在尝试获取 MessageBox 以显示错误。
这是我在 ServiceHelper 层中的代码:
public void GetRandomBibleVerseById(Action<Bible, Exception> callback)
{
var client = new StoneFalconClient();
client.GetRandomBibleVerseByIdCompleted += (s, e) =>
{
var userCallback = e.UserState as Action<Bible, Exception>;
if (userCallback == null)
{
return;
}
if (e.Error != null)
{
userCallback(null, e.Error);
return;
}
userCallback(e.Result, null);
};
client.GetRandomBibleVerseByIdAsync(callback);
}
我尝试通过执行类似这样的操作在服务调用周围放置一个 try/catch,但我没有得到任何消息框来显示错误。这是我的 MainViewModel:
public MainViewModel()
{
if (IsInDesignMode)
{
BibleVerse = LoadDebugVerse();
}
else
{
try
{
ServiceHelper helper = new ServiceHelper();
helper.GetRandomBibleVerseById((bibleVerse, error) =>
{
Bible displayVerse = LoadDisplayVerse(bibleVerse);
BibleVerse = displayVerse;
TestamentBookChapterVerse = displayVerse.Testament + ": " + displayVerse.Book + " " + displayVerse.Chapter + ":" + displayVerse.Verse; ;
});
}
catch (Exception ex)
{
ErrorMessage = new RelayCommand<String>(m => MessageBox.Show("Error: Click refresh to try again"));
}
}
}
我将 xaml 页面中的 xaml 绑定到 viewModel。我怀疑我不应该使用 try/caatch 而是检查 e.Error 但我不知道该怎么做。
任何帮助将不胜感激,我一直在寻找没有运气的答案。