0

我正在使用 caliburn.micro MVVM 框架进行 Windows 8 应用程序开发。

我在设计时数据方面遇到问题。我通过各种博客看了高低,找不到答案。到目前为止没有运气。

这是我认为在设计时使用此视图模型的部分

xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:cal="using:Caliburn.Micro"  
xmlns:vm="using:MyApp.SampleViewModels"
mc:Ignorable="d"
d:DataContext="{d:DesignInstance Type=vm:SampleNewsViewModel, IsDesignTimeCreatable=True}"
cal:Bind.AtDesignTime="True">

d:DataContext... 部分带有下划线并表示“对象引用未设置为对象的实例

我有一个带有默认构造函数的视图模型

namespace MyApp.SampleViewModels
{
   public sealed class SampleNewsViewModel 
   {
       public SampleNewsViewModel()
       {
           Title = "News Title";
       }

       private string _title;
       public string Title
       {
           get { return _title; }
           set { _title = value; }
       }
   }
}

很确定我的 ViewModel 没有任何问题(但我可能是错的)。我无法弄清楚这一点,正确方向的任何一点都会很棒。

干杯,洛查纳

4

2 回答 2

0

首先,确保您已经正确配置了命名空间(这让我多次头疼)。现在有了这个,我可以告诉你也尝试一下:

  1. 尝试将这些添加到您的命名空间声明mc:Ignorable="d"xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006".

  2. 如果仅此一项不起作用,请尝试替换 Type=vm:SampleNewsViewModelType={x:Type vm:SampleNewsViewModel并查看是否有效。

于 2013-07-07T12:14:00.320 回答
0

哦,伙计……我发现了问题,这是我的错。

在我的设计时视图模型中,我没有初始化 list,并且在构造函数中,试图向其中添加项目。

这修复了它

private List<NewsItem> _itemListView = new List<NewsItem>();
    public List<NewsItem> ItemListView
    {
        get { return _itemListView; }
        set { _itemListView = value; }             
    }

我在这里学到的教训是错误消息“对象引用未设置为对象的实例”可能意味着您的视图模型已损坏,即使它没有明确说明。因此,对于刚开始使用 caliburn.micro 的任何人,请对您的设计时视图模型进行单元测试,以确保它们按预期工作。

于 2013-07-12T09:33:30.580 回答