2016-04-09 1 views
0

S'il vous plaît aider. J'utilise Prism WPF + mef 6.1.0prism mef ViewSortHint ne fonctionne pas

Enregistré toutes les vues pour chaque région par attribut

[ViewExport(RegionName = RegionNames.NavigatorRegion)] 
    [PartCreationPolicy(CreationPolicy.Shared)] 
    [ViewSortHint("1")] 
    public partial class AView: UserControl 
    { 
    } 

    [ViewExport(RegionName = RegionNames.NavigatorRegion)] 
    [PartCreationPolicy(CreationPolicy.Shared)] 
    [ViewSortHint("2")] 
    public partial class BView: UserControl 
    { 
    } 

Et leur montrer en coquille à l'aide ContentControl

<ContentControl prism:RegionManager.RegionName="{x:Static r:RegionNames.NavigatorRegion}"/> 

J'utilise ContentControl parce que je besoin d'un seul vue active. Cependant, BView est toujours affiché en premier mais je l'ai défini [ViewSortHint ("2")].

Quel est le problème? Lorsque je supprime BView, l'affichage AView est correct.

+0

pouvez-vous nous donner plus d'informations sur ce que vous voulez? – toumir

+0

Je veux quand le shell est chargé AView affiché. – John

Répondre

1

ViewSortHintAttribute a seulement une signification si votre région prend en charge l'affichage de plusieurs vues en même temps, comme un ItemsControl ou un TabControl.

Si vous souhaitez utiliser un ContentControl simple (qui ne peut afficher qu'une seule vue), vous devez utiliser la navigation ou l'injection de vues.

Comment injecter une vue, vous pouvez lire on MSDN:

  1. Obtenir une référence à la IRegionManager par injection de dépendance.
  2. Obtenez la région dans laquelle vous souhaitez placer votre vue.

par exemple .:

IRegion mainRegion = regionManager.Regions[RegionNames.NavigatorRegion]; 
  1. Ajoutez la vue de la zone (éventuellement éliminer une vue précédemment ajoutée).

Alternativelly, vous pouvez utiliser la navigation en fonction de la vue. Jetez un oeil sur ce documentation.

// Obtain region manager via DI 
IRegionManager regionManager = ...; 
regionManager.RequestNavigate(RegionNames.NavigatorRegion, new Uri("ViewA", UriKind.Relative));