如何动态创建视图并将其添加到当前视图的特定区域,例如创建和添加orroids MvxFrameControl?
我在Android上需要一些
var frameHelpControl = (MvxFrameControl)ViewFactory.CreateByModel(frameHelpControlModel);
regionForHelpFrame.AddView(frameHelpControl, new ViewGroupParameters(.....));
我需要能够通过DI Factory按模型创建View并将其添加到任何区域。我知道在标准主持人中有这样的工厂,但如果我需要在没有演示者的情况下为我创建控制器怎么办?
例如,我在旧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);
}
如何在MvvmCross Android / iOS上重写它(我认为它会相同),它将继承MvxFrameControl并需要在View中添加。
答案 0 :(得分:1)
您可以像这样加载ViewModel:
var loaderService = Mvx.Resolve<IMvxViewModelLoader>();
var viewModelRequest = MvxViewModelRequest<MyViewModel>.GetDefaultRequest();
var viewModel = loaderService.LoadViewModel(viewModelRequest, null);
然后你可以创建一个MvxFrameControl
并为BindingContext
分配新创建的ViewModel。
但是,您应该依赖于Android上的RecyclerView和iOS上的TableView / CollectionView等机制,而不是创建视图并添加到父视图。