2012-12-04 24 views
6

Ich muss die Region basierend auf dem gebundenen RegionName laden. Somehing wieWPF + PRISM So ändern Sie die Region zur Laufzeit

<ContentControl cal:RegionManager.RegionName="{Binding CustomRegionName}" 
        Grid.Column="2"/> 

Alle Regionen sind ordnungsgemäß registriert. Wenn ich den Wert von CustomRegionName ändere, ändert sich die Region nie. Wie kann ich das machen?

Antwort

5

Dieses Verhalten ist, da die Region bereits in der visuellen Struktur geladen ist. Können Sie Ihre App geringfügig ändern, sodass Sie den Regionsnamen beibehalten, aber mehrere Ansichten in die Region laden? Auf diese Weise würden Sie können wählen, welche Ansicht in der Region aktiv und dynamisch die Anzeige der Inhaltskontrolle ändern, indem die IRegionViewManager und iRegion Schnittstellen dh

IRegion region = regionManager.Regions["RegionName"]; 
object view = container.Resolve<SomeView>(); 
object view2 = container.Resolve<SomeView2>(); 

region.Add(view); 
region.Add(view2); 

Dann, wo man irgendwo eine bestimmte Ansicht zeigen wollen sonst Inject der IRegionManager und dann

anrufen
region.Activate(whichever view); 
+0

danke .. sieht gut aus für mich. Ich werde das umsetzen. –

+0

es funktioniert super. vielen Dank Alter –

Verwandte Themen