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 ..

Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top