c# - Bind Pop-Up data into a screen from which Pop-up has triggered in WPF using MVVM -


i developing wpf application using mvvm pattern in 1 of screen has datagrid , has button called add unit in row on click of opens pop-up shown below:

enter image description here (i created new view , calling view on click of addunit button).so again popup window has datagrid multiple rows shown below: enter image description here

my question how can able bind row data (only 2 columns itemcode , itemname)from pop-up datagrid main window (without changing data above datagrid in main window) hope making sense or there other correct way of doing this.

i have hard-time new wpf , mvvm., appreciate.

let's make these datacontexts(popup's , grid popup opened) share same service(you can inject service these datacontexts in time created). service updated each time popup's grid selection of new row happens. in addition it(the service) raise event inform fact selection in popup grid happened , sends selected data inside eventargs. data context of grid popup opened listen shared service event , update grid itemsource collection in way like.

update

    public class maingriddatacontext:baseobservableobject     {     private readonly ilikeeventaggregator _sharedservice;     //here inject the interface     public maingriddatacontext(ilikeeventaggregator sharedservice)     {         _sharedservice = sharedservice;         //listen selection changed         _sharedservice.popupgridselectionhandler += sharedserviceonpopupgridselectionhandler;     }      //uncomment next c'tor if don't have injection mechanism,     //you should add sharedservice property app class     //public maingriddatacontext()     //{     //    //_sharedservice = app.current.     //    var app = application.current app;     //    if (app != null)     //    {     //        _sharedservice = app.likeeventaggregator;     //        _sharedservice.popupgridselectionhandler += sharedserviceonpopupgridselectionhandler;     //    }     //}      private void sharedserviceonpopupgridselectionhandler(object sender, popupgriddata popupgriddata)     {         updategridwithapopupselecteddata(popupgriddata);     }      //method helps update grid, can in multiple ways     private void updategridwithapopupselecteddata(popupgriddata popupgriddata)     {         //update datagrid here.     } }  public class popupdatacontext:baseobservableobject {     private readonly ilikeeventaggregator _sharedservice;     //here inject the interface     public popupdatacontext(ilikeeventaggregator sharedservice)     {         _sharedservice = sharedservice;     }      //uncomment next c'tor if don't have injection mechanism,     //you should add sharedservice property app class     //public popupdatacontext()     //{     //    //_sharedservice = app.current.     //    var app = application.current app;     //    if (app != null)     //    {     //        _sharedservice = app.likeeventaggregator;     //    }     //}      //... logic      private popupgriddata _selecteddata;     //you should bind popup grid selected value property     public popupgriddata selecteddata     {         { return _selecteddata; }         set         {             _selecteddata = value;             onpropertychanged(() => selecteddata);             _sharedservice.onpopupgridselectionhandler(_selecteddata);         }     }      //... logic }    public class popupgriddata {     public object popupgridselecteddata { get; set; } } 

shared service code

public interface ilikeeventaggregator {     event eventhandler<popupgriddata> popupgridselectionhandler;     void onpopupgridselectionhandler(popupgriddata e); }  public class likeeventaggregator : ilikeeventaggregator {     public event eventhandler<popupgriddata> popupgridselectionhandler;      public virtual void onpopupgridselectionhandler(popupgriddata e)     {         var handler = popupgridselectionhandler;         if (handler != null) handler(this, e);     } } 

let me know if need more info. regards.


Comments

Popular posts from this blog

Spring Boot + JPA + Hibernate: Unable to locate persister -

go - Golang: panic: runtime error: invalid memory address or nil pointer dereference using bufio.Scanner -

c - double free or corruption (fasttop) -