Caliburn.micro设计WinRT的时间数据 - 对象引用未设置为对象的实例

时间:2013-07-07 05:28:56

标签: xaml winrt-xaml caliburn.micro design-time design-time-data

我正在使用caliburn.micro MVVM框架执行Windows 8 app dev。

我遇到设计时数据问题。我通过各种博客看起来高低不高,什么都找不到答案。到目前为止没有运气。

以下是我视图中的一节,我说这个视图模型用于设计时间

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没有问题(但我可能错了)。 我无法弄清楚这一点,正确方向的任何一点都会很棒。

欢呼声, Lochana

2 个答案:

答案 0 :(得分:0)

首先,请确保您已正确配置名称空间(这让我头疼很多次)。现在,我可以告诉你尝试一些事情:

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

  2. 如果仅此一项无效,请尝试更换 Type=vm:SampleNewsViewModel Type={x:Type vm:SampleNewsViewModel并查看是否有效。

答案 1 :(得分:0)

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

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

这解决了它

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

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