Установка источника кадра WPF в файл XAML во внешнем dll, на который ссылается пакет NuGet, вызывает исключение - PullRequest
1 голос
/ 04 марта 2020

Как часть механизма навигации в моем приложении 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 с использованием этого инструмента.

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

...