Wie zeige ich die Ansicht aus einem anderen Modul an und greife auf seine Eigenschaften zu, um ihren Zustand zu aktualisieren?

StackOverflow https://stackoverflow.com/questions/2342256

  •  23-09-2019
  •  | 
  •  

Frage

Ich habe zwei Module, eines ist ein Headermodul, eines ist ein Elementmodul.

Ich habe eine Headerdetails -Ansicht, die eine Region enthält, die als "itemsSummaryregion" bezeichnet wird. Diese Region ist registriert, um die Region mit der Ansicht ItemlistView aus dem Element -Modul zu bevölkern.

regionManager.RegisterViewWithRegion("ItemsSummaryRegion", typeof(IItemListView));

Das Problem ist, wie ich Zugriff auf diese automatisch generierte Ansicht erhalte, damit ich die Liste der Elemente festlegen kann, die sie anzeigen sollen? Ich möchte dies im ViewModel der Headerdetails -Ansicht festlegen.

Weiß jemand, wie du das machst? Oder können Sie einen besseren Weg vorschlagen, um diese Daten anzuzeigen?

Vielen Dank.

War es hilfreich?

Lösung

Wenn Ihre beiden Module so fest gekoppelt sind, wäre es nicht sinnvoller, nur ein Modul mit beiden Ansichten zu haben und sie mit Master/Details einzurichten.

Dieses Beispiel zeigt etwas Ähnliches wie das, was Sie erreichen möchten:http://www.tanguay.info/web/index.php?pg=Codeexamples&id=105

Andere Tipps

Sie sollten den UnityContainer verwenden, um Dinge zu erstellen und dann hinzufügen und aktivieren.

    public TaskList(IEventAggregator eventAggregator, 
                    IRegionManager regionManager, 
                    IUnityContainer container)
    {
        _EventAggregator = eventAggregator;
        _RegionManager = regionManager;
        _Container = container;
    }


        IItemListVM vm = _Container.Resolve<IItemListVM>();
        IItemListView view = new IItemListView(vm);

        _RegionManager.Regions["ItemsSummaryRegion"].Add(view);
        _RegionManager.Regions["ItemsSummaryRegion"].Activate(view);

Dadurch können Sie anrufen IRegion.Remove später, wenn Sie die Region löschen möchten. Wenn Sie nur eine Region mit Ansicht registrieren möchten, können Sie dies auch tun. Ersetzen Sie einfach die letzten paar Zeilen meiner Logik durch den anderen Anruf, um das RegisterWithregion zu registrieren:

_RegionManager.RegisterViewWithRegion("ItemsSummaryRegion", 
     (x) => 
     { 
          _Container.Resolve<IItemListView>(); 
     });
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top