Ich brauche alle Kinder einer Ansicht, um ein Stück kontextuelle Informationen zu kennen (die Person, die sie zeigen müssen). Ich brauche auch den Ansatz, um mit MVVM kompatibel zu sein. Ich habe das mit RegionContext in meiner Prism-Anwendung versucht. Hier ist mein Ansatz und Probleme:Share Kontextdaten mit allen Kindern einer Kontrolle
Ich habe ein TabControl, die ich anzeigen Injection verwenden, um mit Blick auf bevölkern, so dass ich RegionContext füllen kann:
Von Shell.xaml:
<TabControl DockPanel.Dock="Right" cal:RegionManager.RegionName="TabRegion">
Und hier sind meine Injektion
//Create an instance of ContactView.xaml
contactView = CreateContactView(contact);
_regionManager.Regions["TabRegion"].Add(contactView, contactKey, true);
//"contact" being a simple entity of type Contact
RegionManager.SetRegionContext(contactViewb, contact);
Was ich erwartete war in der Lage sein, eine angefügte Eigenschaft zu verwenden, um den Wert des R zu erhalten egionContext von jeder Kontrolle, die ein Kind dieses DependencyObject ist (ContactView.xaml) über die RegionManager.RegionContext angebracht Eigenschaft:
Von ContactView.xaml
<TextBlock Text="{Binding
RelativeSource={RelativeSource Self},
Path=(cal:RegionManager.RegionContext)}"/>
Aber das funktioniert nicht ... Ich habe ContactView.xaml zu finden, um es zu arbeiten:
<TextBlock Text="{Binding
RelativeSource={RelativeSource
Mode=FindAncestor,
AncestorType={x:Type views:ContactView}},
Path=(cal:RegionManager.RegionContext)}"/>
Das ist in Ordnung, aber ich werde Module erlauben Einblicke in Contact zu laden, und ich würde es vorziehen, sie hatten nichts wissen Contact.
Ich denke, meine Frage ist wirklich, Wie wird erwartet, dass Sie eine komplizierte Ansicht mit vielen Steuerelementen und Regionen laden und sie alle ein Stück Kontextdaten teilen?
Was ist der richtige Weg? Scoped Behälter? Schreiben Sie eine neue angefügte Eigenschaft, die die Steuerhierarchie hochfährt, um den RegionContext (ugh) zu finden? Ich verwende RegionContext nicht korrekt? Ich bin für alles offen. Schlage weg.
Ja ... Ich verstehe deinen Standpunkt. Ich befürchte, dass der Container zu einem Abladeplatz für Daten werden wird, aber wahrscheinlich der beste Ort für "Umgebungsdaten". –
Auch ... wofür ist RegionContext gut? Der "Kontext" Teil des Namens scheint irreführend. –
Können Sie einen Link zum Beispiel eines "scoped Unity container" im Prisma geben? Ich kann es nicht in Google finden. –