2016-04-09 2 views
0

Bitte helfen. Ich benutze Prism wpf + mef 6.1.0prism mef ViewSortHint funktioniert nicht

Registriert alle Ansichten für jede Region durch 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 
    { 
    } 

Und zeigen sie in der Schale mit Content

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

ich Content verwenden, weil ich nur einen braucht aktive Ansicht. Allerdings zeigt BView immer zuerst an, aber ich setze darauf [ViewSortHint ("2")].

Was falsch? Wenn ich BView entferne dann AView Anzeige zuerst richtig.

+0

Können Sie uns mehr Informationen über das geben, was Sie wollen? – toumir

+0

Ich möchte, wenn Shell geladen AView angezeigt. – John

Antwort

1

ViewSortHintAttribute hat nur dann eine Bedeutung, wenn Ihre Region die gleichzeitige Anzeige mehrerer Ansichten unterstützt, z. B. ItemsControl oder TabControl.

Wenn Sie eine einfache ContentControl (die nur eine einzige Ansicht anzeigen kann) verwenden möchten, müssen Sie entweder Navigation oder Ansichtsinjektion verwenden.

  1. Erhalten Sie einen Verweis auf die IRegionManager über Dependency Injection:

    Wie eine Ansicht zu injizieren, können Sie on MSDN lesen.

  2. Erhalten Sie die Region, in der Sie Ihre Ansicht platzieren möchten.

z.B .:

IRegion mainRegion = regionManager.Regions[RegionNames.NavigatorRegion]; 
  1. Fügen Sie den Blick auf die Region (optional eine zuvor hinzugefügten Ansicht zu entfernen).

Alternativelly, können Sie Ansicht basierte Navigation verwenden. Werfen Sie einen Blick auf diese documentation.

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