Почему я получаю FreezableCollection`1 не является допустимым значением в конструкторе XAML

#wpf #xaml #visual-studio-2019

#wpf #xaml #visual-studio-2019

Вопрос:

Я пытаюсь использовать классы Nish Nishant для расширения системного меню окна WPF. Проект Nish находится в Code Project как удобный для MVVM подход к добавлению элементов системного меню в приложение WPF

Я включил исходные файлы Nish в свой проект и определил некоторые команды меню для системного меню.

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

Однако конструктор XAML показывает мне ошибку

‘Система.Windows.FreezableCollection`1[NS.MVVM.SystemMenuItem]’ не является допустимым значением для свойства ‘MenuItems’.

введите описание изображения здесь

Эта ошибка появляется только после компиляции проекта. Я не получаю ошибку в примере проекта Nish. Я использую Visual Studio 2019 версии 16.8.3. Что может быть причиной этого сообщения об ошибке?

Редактировать

Теперь я знаю, что вызывает сообщение об ошибке, в том смысле, что я знаю, в чем разница между моим проектом и примером проекта Nish.

Проект Nish нацелен на платформу x86, тогда как мой проект нацелен на любой процессор.

Это понятно, потому что код использует функции Win32 API. Я изменил целевую платформу для своего проекта на x86, и ошибка исчезла.

Однако я до сих пор не совсем понимаю, почему возникает ошибка и как она связана с основной проблемой целевой платформы.

Комментарии:

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

2. Спасибо, Джек, теперь я понял, в чем разница между образцом проекта Nish и моим проектом, и я отредактировал вопрос. Я не отправил его в качестве ответа, потому что я не понимаю причину конкретного сообщения об ошибке. Вы правы, что я мог бы задать вопрос о Code Project, и, возможно, я должен, но Stack Overflow — гораздо более активное сообщество.

3. Не могли бы вы обновить свою цель до .Net Framework 4.8? При использовании версии is ошибка при восстановлении отсутствует.