Смесь не может отобразить данные времени разработки, которые Visual Studio 2010 может отображать - PullRequest
1 голос
/ 22 ноября 2011

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

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

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

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

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

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

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

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

1 Ответ

2 голосов
/ 22 ноября 2011

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

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

...