2016-04-08 16 views
1

ich mich in einer schwierigen Situation gefunden versuchen, das folgende Szenario zu lösen:PRISM RegionManager Region in mehreren Regionen

Ich habe zwei Ansichten mit jeweils 1-Region, läßt diese View1.RegionA nennen, View2.RegionB. Ich registriere ein Steuerelement in diesen Regionen, lasst uns dieses Control nennen. Steuerung hat auch einen Bereich (Control.Region), in die ich ein anderes Steuer bin Registrierung dieses Subcontrol nennen wir

|Module_A 
    -View1 
    --RegionA 
|Module_B 
    -View2 
    --RegionB 
|Module_C 
    -Control 
    --Control.Region 
    -Subcontrol 

Wenn ich das Mainview zu öffnen, die enthält Ansicht1 und View2 ich die folgende Fehlermeldung erhalten:

„Region mit dem angegebenen Namen ist bereits registriert: Control.Region“

ich habe versucht, diese Scoped regions mit der Lösung, aber wenn ich meine app tat so abgestürzt ist es wurde versucht, die Ansichten bei Anwendung starten instanziiert die verursachte einen Absturz meiner App, da viele Objekte an diesem Punkt nicht initialisiert wurden t.

Ich habe auch versucht, an die Control.Region.RegionName -Eigenschaft zu binden, aber in diesem Fall wurde mein RegionContext nicht festgelegt und erhielt den gleichen Fehler wie am Anfang.

Gibt es eine andere Lösung?

Antwort

0

Dies passiert, weil Sie mehrere Instanzen von Control.Region anzeigen, und da Sie nur eindeutige Regionsnamen haben dürfen, wird eine Ausnahme ausgelöst. Du bist auf dem richtigen Weg. Sie müssen bereichsspezifische Bereiche verwenden, um dies zu beheben. Wahrscheinlich machen Sie etwas falsch bei der Implementierung Ihrer Zielregionen. Es gibt nicht genügend Informationen in Ihrem Beitrag zu identifizieren, was das ist, aber ich decke scoped Regionen in diesem Plural Kurs, der Sie in der richtigen Richtung helfen soll loslegen:

https://app.pluralsight.com/library/courses/prism-showing-multiple-shells/table-of-contents

+0

Hallo Brian, vielen Dank für Ihre Antwort ! Es gibt einen Unterschied, den ich schon früh in Ihrem Kurs bemerkt habe, nämlich dass ich den Regionsmanager etwas anders benutze, indem ich RegisterViewWithRegion verwende, das die Ansicht nur dann instanziiert, wenn es angezeigt wird, und in allen ScopedRegion-Beispielen Instanziieren Sie die Ansicht, wenn Sie sie zum Regionsmanager hinzufügen. Gibt es eine Möglichkeit dies zu tun, ohne es instanziieren zu müssen? Weil das der Grund ist, warum es für mich versagt. –

+1

Ehrlich gesagt, habe ich RegisterVIEWWithRegion nie mit Scoped-Regionen verwendet, hauptsächlich weil Sie zuerst die Scoped-Region erstellen müssen, die normalerweise beim Injizieren der Ansicht erfolgt. Sie können die Navigation verwenden, wenn Sie dies bevorzugen, damit Sie keine Ansichtsobjekte erstellen müssen. –

+0

Ich habe gerade die Antwort dafür gefunden: https://msdn.microsoft.com/en-us/library/ff921174(v=pandp.40).aspx "Sie sollten keine Ansichts-Discovery-Komposition verwenden, wenn Sie einen Bereichsbereich benötigen Manager " –