Смесь не может отобразить данные времени разработки, которые Visual Studio 2010 может отображать

Я посмотрел на другой вопрос, однако ошибка, которую я получаю, более конкретна.

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

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

Тип "AccessDeniedViewModel" не включает никаких доступных конструкторов.

Строка в моем XAML, которая включает данные времени разработки, d:DataContext="{d:DesignData /SampleData/AccessDeniedViewModelSampleData.xaml}", Я использовал Blend 'Create Sample Data from Class...' для создания этого файла данных.

Однако когда я открываю это представление в Visual Studio 2010, оно полностью может отображать его вместе с данными времени разработки.

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

РЕДАКТИРОВАТЬ: я должен также упомянуть, поддержка привязки все еще там, когда я добавляю привязки к представлению, доступные свойства перечислены, как будто он разрешается в правильный тип, просто не может создать его экземпляр.

1 ответ

Решение

Вам нужно будет предоставить конструктор по умолчанию. И вот почему: зачем классу XML-Serializable нужен конструктор без параметров

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

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