public class Navigator : PhoneApplicationPage
{
private static Navigator _instance;
private static object _lock = new object();
public static Navigator Instance
{
get
{
lock (_lock)
{
if (_instance == null)
{
_instance = new Navigator();
}
return _instance;
}
}
private set
{
lock (_lock)
{
_instance = value;
}
}
}
private Navigator(){}
public bool NavigateTo(string uri)
{
lock (_lock)
{
return NavigationService.Navigate(new Uri(uri, UriKind.Relative));
}
}
}
这就是所谓的一个ViewModel类:为什么不能工作(在Singleton上的NavigationService)?
Navigator.Instance.NavigateTo("/NotePage.xaml");
所以我有这个,和NavigationService.Navigate(..)抛出一个NullReferenceException。
我该如何解决这个问题/什么是替代方案?我想从ViewModel类使用NavigationService。
我宁愿一个解决方案,而不需要安装更多的组件(MVVM灯)。如果这是绝对不可能的,我会查看Messenger/Message类。
编辑 我几乎放弃了。我通过创建超链接按钮的样式来解决我的问题,该按钮可以环绕所有东西。
例如,您似乎缺少私人构造函数(隐藏建设的替代方法)。你能提供更多的代码吗? –
NavigationService.Navigate(..)方法不使用该实例吗?什么是导航服务与Navigator类的关系? –
我添加了一个私人构造函数,这是完整的代码。我如何创建关系?我认为成为一个PhoneApplicationPage就足够了。 – SBoss