Создание образца данных из класса в Blend создает «Ссылка на объект не установлена ​​для экземпляра объекта» - PullRequest
7 голосов
/ 14 февраля 2011

Я пытаюсь создать некоторые образцы данных из моих классов ViewModel в Expression Blend. Однако Expression Blend останавливается и говорит: «Ссылка на объект не установлена ​​для экземпляра объекта». Лично я не понимаю, откуда это исключение.

Кто-нибудь имеет представление о том, почему это происходит?

Это мой UsersListViewModel:

[Export]
public class UserListViewModel : ViewModelBase
{
    [ImportingConstructor]
    public UserListViewModel(IUserListView view)
        : base(view)
    {

    }

    private ObservableCollection<UserItem> _userList;

    public ObservableCollection<UserItem> UserList
    {
        get { return _userList; }
        set
        {
            if (_userList != value)
            {
                _userList = value;
                RaisePropertyChanged("UserList");
            }
        }
    }

    private UserItem _selectedUser;

    public UserItem SelectedUser
    {
        get { return _selectedUser; }
        set
        {
            if (_selectedUser != value)
            {
                _selectedUser = value;
                RaisePropertyChanged("SelectedUser");
            }
        }
    }

    private string _searchText;

    public string SearchText
    {
        get { return _searchText; }
        set
        {
            if (_searchText != value)
            {
                _searchText = value;
                RaisePropertyChanged("SearchText");
            }
        }
    }

    private ICommand _searchCommand;

    public ICommand SearchCommand
    {
        get { return _searchCommand; }
        set
        {
            if (_searchCommand != value)
                _searchCommand = value;
        }
    }

    // ... other ICommands
}

Заранее благодарю за помощь,

Ура, G.

Ответы [ 2 ]

2 голосов
/ 09 июля 2013

UPDATE! Лоран (автор MvvmLight) опубликовал, как отлаживать данные времени проектирования. Сообщение в блоге здесь.

Я нашел причину и решение этой ошибки в Blend или при открытии .xaml в Visual Studio.

Ссылка на объект не установлена ​​для экземпляра объекта.

Blend пытается запустить ваш код времени разработки, и если он попадет в нулевой указатель где-то, это ошибка, которую вы получите.

Итак, следите за своим кодом, создавая данные времени проектирования. Скорее всего, вы забыли что-то инициализировать или, возможно, у вас неправильный тип.

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

1 голос
/ 15 августа 2011

Столкнувшись с этой проблемой, я обнаружил, что атрибуты в моих свойствах вызывают это сообщение об ошибке.

Комментирование [ImportingConstructor] и [Export] при создании примера данных (скомпилируйте проект один раз с Blend, чтобы быть уверенным, что он не будет работать со старой версией), может помочь в этом.

...