O Prism 4: RequestNavigate () não está funcionando
Estou construindo um aplicativo de demonstração para aprender os recursos de navegação do Prism 4. O aplicativo possui dois módulos - cada um com três visualizações:
Um UserControl com um bloco de texto ("Bem-vindo ao Módulo A")Um RibbonTab (usando um adaptador de região) eUm botão de tarefa no estilo do Outlook (como o Mail, o Calendário e assim por diante) do OutlookO Shell tem três regiões nomeadas: "RibbonRegion", "TaskButtonRegion" e "WorkspaceRegion". As visualizações são carregadas nessas regiões. Para testar a configuração básica, registrei todas as três visualizações no Prism Region Manager, para que elas fossem carregadas na inicialização e funcionassem conforme o esperado.
Em seguida, modifiquei a instalação para que apenas os botões de tarefas fossem carregados na inicialização. Outras visualizações seriam carregadas apenas mediante solicitação, clicando em um botão Tarefa. Meus inicializadores de módulo são assim:
public void Initialize()
{
/* We register the Task Button with the Prism Task Button Region because we want it
* to be displayed immediately when the module is loaded, and for the lifetime of
* the application. */
// Register Task Button with Prism Region
m_RegionManager.RegisterViewWithRegion("TaskButtonRegion", typeof(ModuleATaskButton));
/* We register these objects with the Unity container because we don't want them
* instantiated until we navigate to this module. */
// Register View and Ribbon Tab as singletons with Unity container
m_Container.RegisterType(typeof(ModuleAView), "ModuleAView", new ContainerControlledLifetimeManager());
m_Container.RegisterType(typeof(ModuleARibbonTab), "ModuleARibbonTab", new ContainerControlledLifetimeManager());
}
Quando o usuário clica em um botão de tarefa, ele chama um objeto ICommand que chamaIRegionManager.RequestNavigate()
para mostrar as visualizações:
public void Execute(object parameter)
{
// Initialize
var regionManager = m_ViewModel.RegionManager;
// Show Ribbon Tab
var moduleARibbonTab = new Uri("ModuleARibbonTab", UriKind.Relative);
regionManager.RequestNavigate("RibbonRegion", moduleARibbonTab);
// Show View
var moduleAView = new Uri("ModuleAView", UriKind.Relative);
regionManager.RequestNavigate("WorkspaceRegion", moduleAView);
}
O comando está sendo chamado quando um botão de tarefa é clicado, mas o que recebo é o seguinte:
O UserControl aparentemente está carregando como umSystem.Object
, e suspeito que o RibbonTab esteja carregando o mesmo. Eu acho que o problema está no meuRequestNavigate()
chamada ou meu registro no Unity. Mas não consigo identificar o problema.
Alguém pode lançar alguma luz sobre o que está acontecendo? Obrigado pela ajuda.