Ошибка конструктора XAML «Объект не соответствует типу цели» для подкласса ResourceDictionary - PullRequest
0 голосов
/ 10 февраля 2019

Я унаследовал от ResourceDictionary, чтобы добавить несколько пользовательских свойств для поддержки скиннинга.Все компилируется и работает правильно, но конструктор XAML VS2017 показывает сообщение об ошибке «Объект не соответствует типу цели».Для воспроизведения проблемы достаточно следующего простого класса:

public class SubclassedResourceDictionary : ResourceDictionary
{
    public SubclassedResourceDictionary() : base()
    { }

    public string ExtraInfo { get; set; } = string.Empty;
}

Интересно, что он показывает исключение только при обращении к пользовательскому свойству.Третья запись показывает исключение, но вторая нет:

<ResourceDictionary Source="Styles/BorderStyling.xaml"/>
<local:SubclassedResourceDictionary Source="Styles/BorderStyling.xaml"/>
<local:SubclassedResourceDictionary ExtraInfo="foo" Source="Styles/BorderStyling.xaml"/>

enter image description here

Обычно я бы проигнорировал это как еще один другой дизайнер-ошибка, но мой настоящий код также реализует интерфейс ISupportInitialize, который выдает исключения, чтобы предупредить разработчика о недопустимых комбинациях пользовательских свойств.Эти исключения никогда не показываются, что, по крайней мере, говорит о том, что исключение целевого типа происходит до того, как мой код запускается.

Мне интересно, есть ли в коллекции, используемой для хранения ресурсов, код, который принимает только "настоящий" ResourceDictionaryобъекты.Я сталкивался с этим независимо от того, указан ли подкласс в списке MergedDictionary или в других списках ресурсов, таких как <Window.Resources>.Но, опять же, он на самом деле собирается и запускается, поэтому, если это проблема, может быть, это связано с проверкой конструктора?

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...