从ViewModel对象创建视图
问题描述:
我看到MvvmCross touch支持使用MvxViewModelRequest
从ViewModel对象创建视图。从ViewModel对象创建视图
但在MvvmCross WPF,我可以用
Mvx.Resolve<IMvxSimpleWpfViewLoader>().CreateView(viewmodelRequest)
但是,我无法找到一个方法来创建一个视图模型对象视图只创建一个从MvxViewModelRequest
看法?对于WPF,这是否支持MvvmCross?
答
默认情况下,Wpf中不包含此功能 - 但您可以轻松添加它。
逻辑将类似于在https://github.com/MvvmCross/MvvmCross/blob/v3.1/Cirrious/Cirrious.MvvmCross.Wpf/Views/MvxWpfViewsContainer.cs请求为基础的代码 - 是这样的:
// Use `IMvxViewFinder` to find the type of view:
var viewType = Mvx.Resolve<IMvxViewFinder>().GetViewType(myViewModel.GetType());
// create a view and set the data context
var viewObject = Activator.CreateInstance(viewType);
if (viewObject == null)
throw new MvxException("View not loaded for " + viewType);
var wpfView = viewObject as IMvxWpfView;
if (wpfView == null)
throw new MvxException("Loaded View does not have IMvxWpfView interface " + viewType);
wpfView.ViewModel = myViewModel;
你可以建设成为一个自定义视图容器或如果你想自定义视图演示这一点。
答
假设u有
public partial class LoginViewController : MvxViewController<LoginViewModel>
比,如果我想使用视图某处ü可以做这样的事情
this.presentedCurrentController = Activator.CreateInstance(typeof(LoginViewController)) as LoginViewController;
(this.presentedCurrentController as LoginViewController).ViewModel = new LoginViewModel();
其中
this.presentedCurrentController it's
var NSViewController presentedCurrentController;
太感谢了@cheesebaron和linkanother one