我有几个使用Ninject进行IoC的PCL。现在我正在尝试用MvvmCross创建一个Android Xamarin项目。 guide表示我可以按照两个步骤继续使用Ninject而不是MvvmCross实现。
这是我的Setup.cs:
public class Setup : MvxAndroidSetup
{
...
protected override IMvxIoCProvider CreateIocProvider()
{
return new NinjectMvxIocProvider(... some NinjectModule[]...);
}
}
我接受了NinjectMvxIocProvider here的实施。
对我来说这看起来很合适,但是对于我的布局中的所有视图都会产生这种输出:
MvxBind:Error: 70.85 View type not found - EditText [0:]
MvxBind:Error: 70.85 View type not found - EditText
11-02 15:56:05.872 I/mono-stdout( 4824): MvxBind:Error: 70.85 View type not found - EditText
并且绑定不起作用,尽管使用正确的服务实现正确创建了ViewModel。
如果我从override IMvxIoCProvider CreateIocProvider()
移除Setup.cs
绑定有效。
这个实现有什么问题,我看不到吗?也许有人有另一个实现,并准备分享?
答案 0 :(得分:0)
做这样的设置怎么样?
public static class App
{
public static StandardKernel Container { get; set; }
public static void Initialize()
{
var kernel = new Ninject.StandardKernel(new NinjectDemoModule());
App.Container = kernel;
}
}
然后解决:
var viewModel = App.Container.Get<MainViewModel> ();
以下是工作示例:IoC Containers with Xamarin