这可能是一个 mvvm-light 问题,而不是一个 winrt 问题,但我有一个使用 mvvm-light 和用 C# 编写的 SQLite 的应用程序。这是一个电视节目库应用程序,可在主页上显示您的所有系列。然后,您可以深入了解您拥有的剧集等等。无论如何,我使用 mvvm-light messenger 将数据从系列库页面的视图模型发送到剧集页面的视图模型。在收到消息后,我使用 SQLite 填充名为 CombinedVMs 的 ObservableCollection<object> 集合。
问题在于,我在进行此导航时似乎确实存在随机错误。错误是代码 80131544,我无法从调试器中获取任何其他信息,因为“本机框架位于调用堆栈的顶部”。该错误似乎总是在我的 CombinedVMs 集合中停止,通常是在我尝试添加它时。有时,当我点击后退按钮并调用一个方法来清除 CombinedVMs 集合时会发生错误。我有时可以多次在系列之间来回导航......有时我可以在它遇到错误之前只做两次。
当我将代码从在剧集视图上使用分组 GridView 控件更改为使用 ItemTemplateSelector 区分季节标题和剧集的非分组 GridView 时,这才开始发生在我身上。我使用 CombinedVMs (ObservableCollection<object>) 来保存 SeasonItemViewModels 和 EpisodeItemViewModels。
我想知道这是否与我如何设置代码的 mvvm-light 部分有关。以下是我的导航方式。
public RelayCommand GoToSeriesCommand
{
get
{
return _gotoSeriesCommand ?? (_gotoSeriesCommand = new RelayCommand(() =>
{
SimpleIoc.Default.GetInstance<SeriesViewModel>();
Messenger.Default.Send<NavigateToSeriesViewMessage>(new NavigateToSeriesViewMessage()
{
FolderGuid = this.FolderGuid,
DisplayName = this.DisplayName,
FanartPathList = this.FanartPathList,
SeriesId = this.SeriesId
});
MainViewModel._navigationService.Navigate(typeof(SeriesView));
}));
}
}
我的 ViewModelLocator 里面有这个是相关的:
static ViewModelLocator()
{
ServiceLocator.SetLocatorProvider(() => SimpleIoc.Default);
if (ViewModelBase.IsInDesignModeStatic)
{
SimpleIoc.Default.Register<IDataService, Design.DesignDataService>();
SimpleIoc.Default.Register<INavigationService, DesignNavigationService>();
}
else
{
SimpleIoc.Default.Register<IDataService, DataService>();
SimpleIoc.Default.Register<INavigationService>(() => new NavigationService());
}
SimpleIoc.Default.Register<SeriesViewModel>();
}
public SeriesViewModel SeriesVM
{
get
{
return ServiceLocator.Current.GetInstance<SeriesViewModel>();
}
}
static public SeriesViewModel SeriesVMStatic
{
get
{
return ServiceLocator.Current.GetInstance<SeriesViewModel>();
}
}
无论如何,我很难过。我不知道如何进行。微软论坛上有一个关于这个特定错误代码的主题,但它是从去年开始的,并且声称它已从更新中修复。
我还能提供什么吗?我不知道从这里去哪里....提前谢谢!