在我的解决方案中,我有这样的代码:
public async Task<bool> Execute(string target)
{
var screen = navigationService.NavigateTo(target) as Screen;
await screen.TaskCompletionSource.Task;
return true;
}
由于解决方案的性质,有时我们导航到的ViewModel可能并不总是具有对应的View。这会导致显示丑陋的窗口并显示未格式化的消息:
找不到视图模型的视图
是否有可能认识到这种情况以及如何处理?例如通过终止屏幕或重定向到另一个屏幕?
答案 0 :(得分:0)
您可以为此使用ViewLocator。
if ((ViewLocator.LocateForModelType(typeof(DummyViewModel), null, null) is TextBlock tb
&& tb.Text.StartsWith("Cannot find", StringComparison.InvariantCultureIgnoreCase)))
{
// View does not exist, Terminate or redirect to another
}
else
{
// View found, redirect to intended one
}