Как часть механизма навигации в моем приложении WPF MVVM я пытаюсь установить свойство Source
элемента управления Frame
для моего просмотра (a UserControl
), расположенного во внешней сборке (файл dll), на которую ссылаются через приватный NuGet Package
.
Это ссылка на пакет в моем csproj
файле:
<PackageReference Include="MyCompany.UI.Views" Version="1.0.0" />
, и вот как я установил источник Frame
:
navFrame.Source = new Uri("/MyCompany.UI.Views;component/MyView.xaml", UriKind.RelativeOrAbsolute);
//or this (both are basically the same):
navFrame.Source = new Uri("pack://application:,,,/MyCompany.UI.Views;component/MyView.xaml", UriKind.RelativeOrAbsolute);
Проблема в том, что как только я установил Source
из Frame
, я получил System.Windows.Markup.XamlParseException
со следующим сообщением:
Не удалось зарегистрировать именованный объект. Невозможно зарегистрировать повторяющееся имя «MyGrid» в этой области.
MyGrid
является первым именованным элементом управления в моем UserControl
.
Ну, очевидно, у меня нет дубликатов имена в моем UserControl
и во всех других моих внутренних представлениях в порядке, если они установлены в качестве источника Frame
.
. Кроме того, я должен отметить, что эта проблема возникла после того, как мы преобразовали старый формат csproj в новый формат 2017/2019 с использованием этого инструмента.
Я подозреваю, что это преобразование является источником проблемы, но у меня нет никаких подсказок, что именно вызывает это исключение.