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, протестируйте свои модели представления времени проектирования, чтобы убедиться, что они работают должным образом.

Прежде всего, убедитесь, что у вас правильно настроены пространства имен (это вызывает головную боль много раз). Теперь, с нашей стороны, я могу сказать, что вы тоже можете попробовать:

  1. Попробуйте добавить их в ваши объявления пространства имен mc:Ignorable="d" а также xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006",

  2. Если это не помогло, попробуйте заменитьType=vm:SampleNewsViewModel с Type={x:Type vm:SampleNewsViewModel и посмотреть, если это работает.

Другие вопросы по тегам