【发布时间】:2017-08-29 08:48:21
【问题描述】:
我已将 MVVM Light 库添加到我的项目中,并创建了一个如下所示的 ViewModelLocator.cs 文件。
public class ViewModelLocator
{
static ViewModelLocator()
{
ServiceLocator.SetLocatorProvider(() => SimpleIoc.Default);
SimpleIoc.Default.Register<MainViewModel>();
}
/// <summary>
/// Gets the Main property.
/// </summary>
public MainViewModel Main
{
get
{
return ServiceLocator.Current.GetInstance<MainViewModel>();
}
}
}
在我的 MainViewModel 上有 2 个导航到页面的命令:
public class MainViewModel : ViewModelBase
{
public INavigation _Navigation { get; set; }
public MainViewModel(INavigation navigation)
{
_Navigation = navigation;
}
public RelayCommand NavigateToPage1Command
{
get
{
return new RelayCommand(async() =>
{
await _Navigation.PushAsync(new Page1());
});
}
}
public RelayCommand NavigateToPage2Command
{
get
{
return new RelayCommand(async() =>
{
await _Navigation.PushAsync(new Page2());
});
}
}
}
但是当应用程序启动时它会给出这个消息/错误:
ActivationException: Type not found in cache: Xamarin.Forms.INavigation.
我需要如何以及在哪里进行设置?也在 ViewModelLocator.cs 文件中?
【问题讨论】:
-
我猜你需要在实现
INavigation接口的ViewModelLocator构造函数中注册一些实际类型
标签: c# mvvm xamarin.forms navigation