Caliburn.micro данные времени разработки для WinRT - ссылка на объект не установлена на экземпляр объекта
Я занимаюсь разработкой приложений для Windows 8, используя framework.inv калибра MVMM.
У меня проблемы с данными времени проектирования. Я смотрел высоко и низко в различных блогах и что не найти ответа. Пока не повезло.
Вот раздел с моей точки зрения, где я говорю использовать эту модель представления для времени проектирования
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 нет ничего плохого (но я могу ошибаться). Я не могу понять это, любая точка в правильном направлении была бы удивительной.
ура, лочана
2 ответа
О, чувак... Я нашел проблему, и это моя вина.
В моей модели представления времени разработки я не инициализировал список, а в конструкторе пытался добавить в него элементы.
Это исправило
private List<NewsItem> _itemListView = new List<NewsItem>();
public List<NewsItem> ItemListView
{
get { return _itemListView; }
set { _itemListView = value; }
}
Урок, который я усвоил здесь, состоит в том, что сообщение об ошибке "Ссылка на объект не установлена для экземпляра объекта" может означать, что ваша модель представления повреждена, хотя в ней явно не сказано. Так что для любого, кто начинает с caliburn.micro, протестируйте свои модели представления времени проектирования, чтобы убедиться, что они работают должным образом.
Прежде всего, убедитесь, что у вас правильно настроены пространства имен (это вызывает головную боль много раз). Теперь, с нашей стороны, я могу сказать, что вы тоже можете попробовать:
Попробуйте добавить их в ваши объявления пространства имен
mc:Ignorable="d"
а такжеxmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
,Если это не помогло, попробуйте заменить
Type=vm:SampleNewsViewModel
сType={x:Type vm:SampleNewsViewModel
и посмотреть, если это работает.