Search code examples
silverlightmefregions

MEF: One region, multiple views to display at the same time


I'm trying to build a modular application that contains the shell application and subsequent modules. I'd like to define a navigation area for modules to display a hyperlink button. I've called this region 'NavigationRegion' in the shell's view:

<ItemsControl Name="NavigationRegion" prism:RegionManager.RegionName="NavigationRegion" />

Inside each module's initialize method, I'm calling the navigation region's add method:

public void Initialize() {
    regionManager.Regions["NavigationRegion"].Add(new Views.Navigation());
}

The modules are all loaded in the bootstrapper using the AggregateCatalog.Catalogs.Add method:

this.AggregateCatalog.Catalogs.Add(new AssemblyCatalog(typeof(Orders.OrderModule).Assembly));
this.AggregateCatalog.Catalogs.Add(new AssemblyCatalog(typeof(People.PeopleModule).Assembly));

The problem is, only one of the views shows up and it is the first assembly that was added to the catalog's view. So how do I get all the views added to the navigation region to show up? Or is there some other method I should be using to show all the views at the same time?


Solution

  • The ItemsControl needs something to tell it to display multiple items:

    <ItemsControl.ItemsPanel>
         <ItemsPanelTemplate>
            <toolkit:WrapPanel />
        </ItemsPanelTemplate>
    </ItemsControl.ItemsPanel>