Как я могу контролировать инициализацию моих модулей, чтобы они могли
зарегистрироваться на панели инструментов, но не показываться изначально?
Я не уверен, что вы подразумеваете под этим.
Я понимаю, что вы хотите, чтобы модули регистрировали свою собственную часть навигации при загрузке. У меня есть похожий сценарий, где у меня есть строка меню сверху и панель кнопок ниже. Каждый модуль при загрузке - вставляет свои собственные кнопки / меню, используя код инициализации:
public void Initialize()
{
this.RegionManager.RegisterViewWithRegion(RegionNames.Menu, typeof(NavigationView));
this.RegionManager.RegisterViewWithRegion(RegionNames.Toolbar, typeof(ToolbarNavigationView));
}
В этих регионах есть реальные кнопки / элементы, которые при нажатии вызывают что-то еще. Например, здесь NavigationViewModel
namespace IDATT.Module.SystemManager.ViewModels
{
using System;
using System.ComponentModel.Composition;
using Microsoft.Practices.Prism.Regions;
[Export]
public class NavigationViewModel
{
[Import]
public ISecurityService SecurityService { get; set; }
[Import]
public IRegionManager RegionManager { get; set; }
public void Mail()
{
this.RegionManager.RequestNavigate(RegionNames.Tabs, new Uri(typeof(MailView).Name, UriKind.Relative));
}
public void MaintainUser()
{
this.RegionManager.RequestNavigate(RegionNames.Tabs, new Uri(typeof(MaintainUserView).Name, UriKind.Relative));
}
public void MaintainGroup()
{
this.RegionManager.RequestNavigate(RegionNames.Tabs, new Uri(typeof(MaintainGroupView).Name, UriKind.Relative));
}
public void MaintainMailTemplate()
{
this.RegionManager.RequestNavigate(RegionNames.Tabs, new Uri(typeof(MaintainMailTemplateView).Name, UriKind.Relative));
}
public void SetUpOptions()
{
this.RegionManager.RequestNavigate(RegionNames.Tabs, new Uri(typeof(SetUpSystemManagerOptionsView).Name, UriKind.Relative));
}
public void Logout()
{
this.SecurityService.Logout();
}
}
}