2010-11-04 9 views
0

Existe-t-il un moyen de trier les vues ajoutées à une région ItemsControl? Les vues ajoutées sont enregistrées avec le conteneur et ajoutées à la région dans chaque module unique.Trier ItemsControl Prism v2.2 Région sans collection liée?

Certains pseudo-code ...

Shell:

<Window> 
    <ItemsControl Prism:RegionManager.Region="ItemsRegion"/> 
</Window> 

Modules: Ceci est le code d'initialisation dans les modules.

protected override void RegisterViewsAndServices() 
{ 
    CommonContainerLifetimeManager.Register<IView, ItemView1>(); 
    Container.RegisterType<IViewModel, ItemViewModel1>("ItemViewModel1"); 
} 

public override void AdditionalInitialization() 
{ 
    var itemView1 = Container.Resolve<ItemView1>(); 
    RegionManager.Regions["ItemsRegion"].Add(itemView1); 
} 

Avec cette approche, il affiche les vues supplémentaires dans la ItemsControl de la coque dans l'ordre les modules sont chargés. En fonction du rôle de l'utilisateur connecté, différents modules sont chargés. Y at-il un moyen, sans avoir à ajouter une collection entre, de trier les itemscontrol.items sur une propriété du viewmodel de la vue par exemple? Existe-t-il un moyen de forcer le chargement des modules dans un certain ordre? J'utilise actuellement un catalogue de modules.

Merci

Andy

Répondre

0

Je trouve la réponse à cette question ... Au moins, je trouve la réponse dans Prism v4.

Vous ajoutez un attribut de classe ViewSortHint au code de la vue. Prism trouvera cet attribut et triera les vues en fonction de la chaîne que vous entrez dans le paramètre ViewSortHint.

[ViewSortHint("01")] 
public partial class SortedButton : UserControl 
{ 
    public SortedButton() 
    { 
     InitializeComponent(); 
    } 
} 

Hope this helps quelqu'un ...

Andy