Exemple #1
0
        private void DialogController_Execute(object sender, DialogControllerAcceptingEventArgs e)
        {
            var dir = ((PersonaDireccion)View.CurrentObject).Direccion;

            if (e.AcceptActionArgs.SelectedObjects.Count < 1)
            {
                return;
            }
            var selectedLoc = (CPA.LocalidadResultItem)e.AcceptActionArgs.SelectedObjects[0];

            var cps = CPA.ObtenerCPA(selectedLoc.Codigo, dir.Calle, dir.Numero);

            var collectionSource = new CollectionSource(ObjectSpace, typeof(CPA.CPAResultItem));

            foreach (var cp in cps)
            {
                collectionSource.Add(cp);
            }

            var view = Application.CreateListView(Application.GetListViewId(typeof(CPA.CPAResultItem)), collectionSource,
                                                  false);

            view.Editor.AllowEdit = false;
            e.AcceptActionArgs.ShowViewParameters.CreatedView  = view;
            e.AcceptActionArgs.ShowViewParameters.TargetWindow = TargetWindow.NewModalWindow;
            e.AcceptActionArgs.ShowViewParameters.Context      = TemplateContext.PopupWindow;
            var dc = Application.CreateController <DialogController>();

            e.AcceptActionArgs.ShowViewParameters.Controllers.Add(dc);

            dc.Tag          = selectedLoc;
            dc.SaveOnAccept = false;
            dc.Accepting   += CPAResultItem_DialogController_Accepting;
            //Truco para forzar la apertura de la view; por lo visto es la unica forma de encadenar dos Popup views
            Application.ShowViewStrategy.ShowView(e.AcceptActionArgs.ShowViewParameters,
                                                  new ShowViewSource(Frame, e.AcceptActionArgs.Action));
        }