У меня есть приложение WPF, которое состоит из Pages в NavigationWindow . В App.Xaml я создаю все свои страницы, чтобы я мог ссылаться на них при использовании команд навигации. Это выглядит примерно так:
<Application ...>
<Application.Resources>
<FirstPage x:Key="first"/>
<SecondPage x:Key="second"/>
</Application.Resources>
</Application>
«Циркулярная» ссылка (не может понять, как еще это назвать) происходит, когда FirstPage ссылается на «second» или наоборот. Давайте просто скажем FirstPage ссылки " second " в этом примере.
<FirstPage ...>
...
<Button
CommandParameter="{StaticResource second}"
</Button>
</FirstPage>
( Прежде чем вы начнете отвечать, я вернусь к порядку, в котором FirstPage и SecondPage добавляются к ресурсам приложения мгновенно! )
Эта ситуация приводит к некоторым странным, бесполезным ошибкам. Во-первых, в App.xaml я получаю ошибку
Не удалось создать экземпляр типа
FirstPage
Итак, я перехожу на FirstPage и пытаюсь загрузить его в конструкторе. В xaml выделена строка, где я ссылаюсь на « second », и отображается это чрезвычайно полезное сообщение об ошибке:
Приложение XAML не удалось загрузить.
Исправить ошибки в приложении XAML
прежде чем пытаться загрузить другой XAML
файлы
Что было первым: курица или яйцо? App.xaml не может загрузиться, потому что он не может создать FirstPage, и я не могу исправить FirstPage, потому что это на самом деле app.xaml, это проблема.
Вещи, которые я пытался исправить это:
1) Я попытался изменить порядок элементов, добавленных в Application.Resources . Я подумал, что если FirstPage нужно получить SecondPage, то SecondPage должен быть добавлен и доступен до появления FirstPage. Это не работает.
2) Я попытался использовать DynamicResource вместо StaticResource . Без помощи.
3) Я попытался добавить экземпляры страницы в коде. Это работает, но не удовлетворяет.
Обратите внимание, приложение компилируется и работает нормально; вопрос в том, почему это ломается во время разработки.
Что я могу сделать, чтобы это исправить? Мне нужно получить доступ к своим страницам повсеместно, чтобы использовать их в качестве параметров навигации, поэтому я помещаю их в ресурсы приложения. Есть ли альтернативный способ сделать это? Мне нужен только один экземпляр каждой страницы в моем приложении, если я могу помочь.