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