Xamarin.Forms:导航到页面失败

时间:2016-01-03 19:36:23

标签: c# visual-studio mvvm xamarin xamarin.forms

我在使用Xamarin的第一个应用程序中,我发现页面导航有困难。我在第一次使用导航时在各个地方进行了研究并取得了成功。

但是当我添加一个按钮时,会调用需要导航的页面构建器,但不会打开任何页面。当我点击我曾经工作过的按钮(根据下面的打印列表)时,它会消失,但我注意到点击设备Windows Phone硬件按钮会点击第一个故障,即它应该是堆栈中的另一个页面。我不知道如何解决,因为在这第二个按钮工作完美,但第一个无法解决,找不到可能是什么问题。

使用Windows Phone项目测试和使用Visual Studio 2015社区。

按钮截图:

enter image description here

MainViewModel.cs通过单击按钮设置绘制导航的命令:

private readonly INavigationService _navigationService;

public MainViewModel()
{
        RescisaoCommand = new Command(NavigateToRescisao);
        FGTSCommand = new Command(NavigateToFGTS);

        _navigationService = DependencyService.Get<INavigationService>();
}

private async void NavigateToRescisao()
{
        await _navigationService.NavigateToRescisao();
}

private async void NavigateToFGTS()
{
        await _navigationService.NavigateToFGTS();
}

App.cs构造函数:

public App()
{
     DependencyService.Register<IMessageService, MessageService>();
     DependencyService.Register<INavigationService, NavigationService>();

     // The root page of your application
     MainPage = new NavigationPage(new MainView());
}

INavigationService.cs界面:

public interface INavigationService
{
    Task NavigateToRescisao();
    Task NavigateToFGTS();
}

NavigationService.cs:

public class NavigationService : INavigationService
{
    public async Task NavigateToRescisao()
    {
        await App.Current.MainPage.Navigation.PushAsync(new RescisaoView());
    }

    public async Task NavigateToFGTS()
    {
        await App.Current.MainPage.Navigation.PushAsync(new FGTSView());
    }
}

FGTSViewModel.cs构造函数(有效):

public FGTSViewModel()
{
     CalculateFgtsCommand = new Command(x => { ShowResult(); });

     _messageService = DependencyService.Get<IMessageService>();
     //_navigationService = DependencyService.Get<INavigationService>();
}

RescisaoViewModel.cs构造函数(不工作):

 public RescisaoViewModel()
 {
       Reasons = new List<string>();
       TypesOfNotice = new List<string>();

       Reasons.Add("Pedido de demissão");
       Reasons.Add("Justa causa");
       Reasons.Add("Sem justa causa");
       Reasons.Add("Término de contrato de experiência");

       TypesOfNotice.Add("Trabalhado");
       TypesOfNotice.Add("Indenizado");

       //_navigationService = DependencyService.Get<INavigationService>();
 }

1 个答案:

答案 0 :(得分:2)

他设法解决了这个问题。我检查了我的绑定并且它们是不完整的名字。

问题是有一个错误描述可以帮助我,我相信这可以为其他人服务。