无法创建类型为'%0'- Windows Phone 8.1错误



我想获得一些示例数据到ViewModel,其中包含要在XAML中绑定的数据。下面是代码:

    private NotifyTaskCompletion<ObservableCollection<Auction>> _recentAuctions;
    public NotifyTaskCompletion<ObservableCollection<Auction>> RecentAuctions
    {
        get
        {
            return _recentAuctions;
        }
        set
        {
            _recentAuctions = value;
            NotifyPropertyChanged("RecentAuctions");
        }
    }
    public MainMenuViewModel()
    {
        RecentAuctions = new NotifyTaskCompletion<ObservableCollection<Auction>>(dataService.GetRecentAuctions());
    }

(它使用来自MDSN文章的NotifyTaskCompletion模式)

GetRecentAuctions方法:

    public async Task<ObservableCollection<Auction>> GetRecentAuctions()
    {
        return new ObservableCollection<Auction>
        {
            new Auction
            {
                Percentage = "69",
                Title = "Szybsza spłata",
                Date = "przed chwilą"
            },
            new Auction
            {
                Percentage = "33",
                Title = "Kolejna pożyczka, tym razem na remont.",
                Date = "1 minutę temu"
            }
        };
    }

到目前为止,它运行良好-项目显示在<ListView>中。当我想测试它是否可以异步工作时,问题开始了,我添加了这个"await"行:

    public async Task<ObservableCollection<Auction>> GetRecentAuctions()
    {
        await Task.Delay(TimeSpan.FromSeconds(1));
        return new ObservableCollection<Auction>
        {
            ...

,得到以下错误:

类型为'System '的第一次异常。在XXX.exe中发生NullReferenceException" XXX.exe " (CoreCLR: .): Loaded " C:windowssystem32 system . runtime . windowsrtime . ui . xaml . ni . dll "。无法找到或打开PDB文件。类型为"windows . ui . xml . markup"的第一次机会异常。XXX.exe中发生XamlParseExceptionWinRT information: Cannot create type '%0' instance [Line: 16 Position: 10]

有人能解释这种行为吗?缺少什么?谢谢你的帮助。

很难说,但对我来说,它看起来像是你试图在ViewModel的构造函数中异步加载数据,问题是虚拟机将在加载数据之前完成创建。如果您正在引用代码中预期初始化的任何数据项,则可能会遇到System.NullReferenceException

如果你想异步加载数据,我建议不要在VM构造函数中这样做。

你可以使用behavior SDK来钩入页面的Loaded事件,然后调用到你的VM。

最新更新