создать экземпляр класса navigationservice - PullRequest
0 голосов
/ 12 февраля 2011

Сегодня я работал над проектом WPF, в котором было главное окно навигации, а затем 4 страницы, которые были загружены в этом главном окне (используя NavigationService.Nagivate ...) ... В XAML это создавало много дублирующегося кода, поэтомуЯ хотел преобразовать меню в пользовательский элемент управления, который затем можно было привязать к каждой странице.Я попытался создать класс для обработки навигации и загрузки каждой страницы, но обнаружил, что NavigationServices является запечатанным классом и не может быть создан.

Может ли кто-нибудь предложить предложение / решение о том, как создать пользовательский элемент управления с элементом меню, который позволит переходить на новые страницы в проекте.Я смог сделать это в пределах страниц и прямого кода, но мне не повезло, пытаясь разделить их.Если это слишком расплывчато, пожалуйста, дайте мне знать, и я предоставлю больше деталей с примерами кода.

Заранее спасибо

1 Ответ

1 голос
/ 12 февраля 2011

Создайте свойство зависимостей NavigationService на вашем пользовательском элементе управления. Затем, когда вы создаете экземпляр своего элемента управления, привяжите это свойство к NavigationService контейнера, в котором должна происходить навигация. Например, страница может отображать пользовательский элемент управления следующим образом:

<local:NavBox NavigationService="{Binding NavigationService, RelativeSource={RelativeSource AncestorType={x:Type NavigationWindow}}}" />

Теперь, когда ваш UserControl вызывает Navigate на своем NavigationService, он будет эффективно вызывать Navigate на содержащем NavigationService NavigationSindow. (Это можно изменить очевидным способом для поддержки Frame или Page вместо NavigationWindow.)

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