Usando Prism para navegação no aplicativo WPF
-
05-07-2019 - |
Pergunta
Estou começando um novo projeto no WPF, e agora estou olhando para usar Prism. Por agora estou simplesmente tentando configurar a navegação do aplicativo usando Prism. Infelizmente a minha falta de experiência com o quadro torna um pouco difícil começar ..
Para ser mais preciso sobre o meu primeiro desafio Tenho uma aplicação com um "menu de navegação /" região e uma região "principal". A região de navegação será o mesmo para todos os pontos de vista diferentes regiões principais, e eu, portanto, definir o menu na shell.xaml. Ao clicar em qualquer item de menu Eu gostaria de adicionar uma exibição para a região usando Prism. Primeiro; é este algo que normalmente vai usar Prism para? Se então; qual é a abordagem típica? E eu quero dizer em um nível mais estrutural ..
A minha impressão é que Prism vai fazer minha aplicação muito mais escalável no final, e eu vejo que eu tenho algumas outras vantagens a partir dele - como o contêiner IoC. Então, eu gostaria de usá-lo - se eu pudesse passar os primeiros passos ..
Solução
Eu tenho um exemplo que usa um pouco mais a sensação CAG para os módulos contribuindo para um menu e como adicionar vistas a uma região. Deve tornar as coisas um pouco mais claro.
http://dl.getdropbox.com/u/376992/CAGMenus.zip
Espero que isso ajude, Anderson
Outras dicas
Bumbuska,
Prism será uma ótima maneira de você para atingir essa funcionalidade e é muito fácil de fazer quando você entender os princípios.
A forma como eu vou fazer isso é adicionar ouvintes de eventos em caso de arranque da sua região principal. Quando você seleciona o item no menu, você acionar o evento. Quando isso acontece o seu Região Principal manipulará o evento e você limpar a visão atual da Região principal. Em seguida, crie a nova visão que você deseja usar e adicioná-lo.
Seu principal região deve ser algo como isto:
public void Initialize()
{
Events.PageEvents.ClickedEvent1 ce1 = this.eventAggregator.GetEvent<Events.PageEvents.ClickedEvent1>();
ce1.Subscribe(LoadView, ThreadOption.UIThread, true);
}
private void LoadView(Events.HomePageEvents.Clicked clicked1)
{
IRegion mainRegion = RegionManager.Regions["MainRegion"];
foreach (object view in new List<object>mainRegion.Views))
{
RegionManager.Regions["MainRegion"].Remove(view);
}
IModule firstModule = Container.Resolve<Modules.FirstModule>();
firstModuleModules.Initialize();
}
Espero que os pontos-lo na direção certa. Por favor, deixe-me saber se você precisar de mais informações.