简体   繁体   English

Frame.navigate和NagivationService不起作用

[英]Frame.navigate and NagivationService do not work

I don't know why Frame.Navigate and NavigationService don't work. 我不知道为什么Frame.Navigate和NavigationService不起作用。

Here my following code, MainPage.xaml : 这里是我的以下代码,MainPage.xaml:

<Grid>
    <ContentControl Content="{Binding CurrentViewModel}" />

    <Button
        Command="{Binding ConnexionViewCommand}"
        x:Name="Connexion_button" 
        HorizontalAlignment="Left" 
        Margin="90,308,0,0"
        Content="Login" 
        VerticalAlignment="Top" 
        Width="282"/>
    <Button 
        Command="{Binding InscriptionViewCommand}"
        x:Name="Create_account" 
        HorizontalAlignment="Left" 
        Margin="90,446,0,0"
        Content="Create Account" 
        VerticalAlignment="Top" 
        Width="282"/>
</Grid>

MainViewModel.cs MainViewModel.cs

public class MainViewModel : ViewModelBase
{
    private ViewModelBase _currentViewModel;

    readonly static ConnexionViewModel _ConnexionViewModel = new ConnexionViewModel();
    readonly static InscriptionViewModel _InscriptionViewModel = new InscriptionViewModel();
    readonly static MainPageViewModel _MainPageViewModel = new MainPageViewModel();


    public ViewModelBase CurrentViewModel
    {
        get
        {
            return _currentViewModel;
        }
        set
        {
            if (_currentViewModel == value)
                return;
            _currentViewModel = value;
            RaisePropertyChanged("CurrentViewModel");
        }
    }
    public ICommand ConnexionViewCommand { get; private set; }
    public ICommand InscriptionViewCommand { get; private set; }

    public MainViewModel()
    {
        CurrentViewModel = MainViewModel._MainPageViewModel;
        ConnexionViewCommand =  new RelayCommand(() => ExecuteConnexionViewCommand());
        InscriptionViewCommand = new RelayCommand(() => ExecuteInscriptionViewCommand());
    }

    private void ExecuteConnexionViewCommand()
    {
        Frame.Navigate(typeof(ConnexionView));
        NavigationService.Navigate(new Uri("/ConnexionView.xaml", UriKind.Relative));
        MessageBox.Show("CONNEXION");
    }

    private void ExecuteInscriptionViewCommand()
    {
        Frame.Navigate(typeof(InscriptView));
        NavigationService.Navigate(new Uri("/InscriptionView.xaml", UriKind.Relative));
        MessageBox.Show("REGISTER");
    }

I have this following error for my Frame.navigate : Cannot Convert System.String to System.Uri. 我的Frame.navigate有以下错误:无法将System.String转换为System.Uri。

For my NavigationService.Navigate : An object reference is required for the property. 对于我的NavigationService.Navigate:属性需要对象引用。 The method or the non-static field "NavigationService.Navigate (Uri) 方法或非静态字段“NavigationService.Navigate(Uri)

Thanks for your help. 谢谢你的帮助。

You are mixing two different things together 你把两种不同的东西混合在一起

This NavigationService.Navigate(new Uri("/ConnexionView.xaml", UriKind.Relative)); 这个NavigationService.Navigate(new Uri("/ConnexionView.xaml", UriKind.Relative)); is common approach in Windows Phone 8.0 and 8.1 Silverlight. 是Windows Phone 8.0和8.1 Silverlight中的常用方法。

This is approach used at Windows Phone 8.1 : Frame.Navigate(typeof(ConnexionView)); 这是在Windows Phone 8.1中使用的方法: Frame.Navigate(typeof(ConnexionView));

In your case Frame.Navigate is not an option, just delete that line. 在您的情况下,Frame.Navigate不是一个选项,只需删除该行。

您不能将Frame.nagivate和NavigationService.Navigate混合在一起。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM