2017-03-31 1 views
0

Comment créer et ajouter dynamiquement une vue à une région spécifique de la vue actuelle, par exemple créer et ajouter des androïdes MvxFrameControl?Comment créer et ajouter de façon dynamique une vue de MvxFrameControl dans une autre mise en page

J'ai besoin certains comme sur Android

var frameHelpControl = (MvxFrameControl)ViewFactory.CreateByModel(frameHelpControlModel); 
regionForHelpFrame.AddView(frameHelpControl, new ViewGroupParameters(.....)); 

Je dois pouvoir créer View par modèle via DI usine et l'ajouter à toutes les régions. Je sais qu'il existe une telle usine à l'intérieur standart présentateur mais que faire si j'ai besoin de créer un contrôleur pour moi sans présentateur?

Par exemple, j'ai le code dans l'ancien projet iOS

private void AddBubble(BubbleMC newBubbleModel) 
{ 
     var bubble = (BubbleVC)ViewContollerFactory.ViewControllerByModel(newBubbleModel, true);    
     bubble.View.Frame = View.Bounds;    
     AddChildViewController(bubble); 
     Add(bubble.View); 
     bubble.DidMoveToParentViewController(this); 
} 

Comment puis-je réécrire sur mvvmCross Android/iOS (je pense que ce sera la même chose) pour BubbleVC qui hérite MvxFrameControl et sera nécessaire pour être ajouté dans View.

Répondre

1

Vous pouvez charger un ViewModel comme ceci:

var loaderService = Mvx.Resolve<IMvxViewModelLoader>(); 
var viewModelRequest = MvxViewModelRequest<MyViewModel>.GetDefaultRequest(); 
var viewModel = loaderService.LoadViewModel(viewModelRequest, null); 

Ensuite, vous pouvez simplement créer un MvxFrameControl et affecter le BindingContext le ViewModel nouvellement créé. Toutefois, au lieu de créer des vues et d'ajouter à une vue parente, vous devez utiliser le mécanisme de RecyclerView sur Android et TableView/CollectionView sur iOS.