我正在使用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
答案 0 :(得分:0)
首先,请确保您已正确配置名称空间(这让我头疼很多次)。现在,我可以告诉你尝试一些事情:
尝试将这些添加到您的命名空间声明mc:Ignorable="d"
和xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
。
如果仅此一项无效,请尝试更换
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开始的人来说,单元测试您的设计时间视图模型,以确保它们按预期工作。