Xamarin.forms 如何修复:OnNavigatedFrom(NavigationParameters)和#x27;:找不到可重写的合适方法

Xamarin.forms 如何修复:OnNavigatedFrom(NavigationParameters)和#x27;:找不到可重写的合适方法,xamarin.forms,Xamarin.forms,3个月的项目即将因此而报废 这完全没有道理。 我已经尝试过重新启动等。我有一个样本项目与相同版本的形式等工作。 我曾尝试将该项目中的AppMapViewModelBase引入我的项目,但错误仍然存在 有什么想法吗 using System; using System.ComponentModel; using Prism; using Prism.Commands; using Prism.Mvvm; using Prism.Navigation; using Xamarin.Essential

3个月的项目即将因此而报废

这完全没有道理。 我已经尝试过重新启动等。我有一个样本项目与相同版本的形式等工作。 我曾尝试将该项目中的AppMapViewModelBase引入我的项目,但错误仍然存在

有什么想法吗

using System;
using System.ComponentModel;
using Prism;
using Prism.Commands;
using Prism.Mvvm;
using Prism.Navigation;
using Xamarin.Essentials;
using Xamarin.Forms;

namespace bla.Infrastructure {


public abstract class AppMapViewModelBase : BindableBase, IInitialize, INavigationAware, IConfirmNavigation, IDestructible
{

    private bool _isBusy;
    public bool IsBusy
    {
        get => _isBusy;
        set => SetProperty(ref _isBusy, value);
    }

    private int _cartItemCount;

    public int CartItemCount
    {
        // get => _password;
        get { return App.Current.CartItemCount; }
        //set => SetProperty(ref _cartItemCount, value);
        set
        {
            _cartItemCount = value;
            App.Current.CartItemCount = value;
            RaisePropertyChanged();
        }
    }


    const string RootUriPrependText = "/";
    DelegateCommand<string> _navigateAbsoluteCommand;
    DelegateCommand<string> _navigateCommand;
    DelegateCommand<string> _navigateModalCommand;
    DelegateCommand<string> _navigateNonModalCommand;

    private bool _isNotConnected;
    public bool IsNotConnected
    {
        get
        {
            if (DesignMode.IsDesignModeEnabled)
            {
                return false;
            }
            else
            {
                return _isNotConnected;
            }
        }
        set
        {
            SetProperty(ref _isNotConnected, value);
        }
    }


    /// <summary>
    /// Gets the navigate absolute command.
    /// </summary>
    /// <value>The navigate absolute command.</value>
    public DelegateCommand<string> NavigateAbsoluteCommand => _navigateAbsoluteCommand ?? (_navigateAbsoluteCommand = new DelegateCommand<string>(NavigateAbsoluteCommandExecute, CanNavigateAbsoluteCommandExecute));

    /// <summary>
    /// Gets the navigate command.
    /// </summary>
    /// <value>The navigate command.</value>
    public DelegateCommand<string> NavigateCommand => _navigateCommand ?? (_navigateCommand = new DelegateCommand<string>(NavigateCommandExecute, CanNavigateCommandExecute));

    /// <summary>
    /// Gets the navigate modal command.
    /// </summary>
    /// <value>The navigate modal command.</value>
    public DelegateCommand<string> NavigateModalCommand => _navigateModalCommand ?? (_navigateModalCommand = new DelegateCommand<string>(NavigateModalCommandExecute, CanNavigateModalCommandExecute));

    /// <summary>
    /// Gets the navigate non modal command.
    /// </summary>
    /// <value>The navigate non modal command.</value>
    public DelegateCommand<string> NavigateNonModalCommand => _navigateNonModalCommand ?? (_navigateNonModalCommand = new DelegateCommand<string>(NavigateNonModalCommandExecute, CanNavigateNonModalCommandExecute));

    /// <summary>
    /// Gets the navigation service.
    /// </summary>
    /// <value>The navigation service.</value>
    protected INavigationService NavigationService { get; }

    /// <summary>
    /// Initializes a new instance of the <see cref="AppMapViewModelBase"/> class.
    /// </summary>
    /// <param name="navigationService">The navigation service.</param>
    /// <exception cref="System.ArgumentNullException">navigationService</exception>
    protected AppMapViewModelBase(INavigationService navigationService)
    {
        if (navigationService == null)
        {
            throw new ArgumentNullException(nameof(navigationService));
        }
        this.NavigationService = navigationService;

        Connectivity.ConnectivityChanged += Connectivity_ConnectivityChanged;
        IsNotConnected = Connectivity.NetworkAccess != NetworkAccess.Internet;

     
    }



    void Connectivity_ConnectivityChanged(object sender, ConnectivityChangedEventArgs e)
    {
        if (e.NetworkAccess != NetworkAccess.Internet)
        {
            //NavigationService.NavigateAsync("NavigationPage/NoInternet");
        }

       IsNotConnected = e.NetworkAccess != NetworkAccess.Internet;
    }


    /// <summary>
    /// Determines whether this instance accepts being navigated away from.  This method is invoked by Prism before a navigation operation and is a member of IConfirmNavigation.
    /// </summary>
    /// <param name="parameters">The navigation parameters.</param>
    /// <returns><c>True</c> if navigation can continue, <c>False</c> if navigation is not allowed to continue</returns>
    public virtual bool CanNavigate(INavigationParameters parameters)
    {
        return true;
    }

    /// <summary>
    /// Determines whether this instance can execute the NavigateAbsoluteCommand.
    /// </summary>
    /// <param name="uri">The uri.</param>
    /// <returns><c>true</c> if this instance can execute NavigateAbsoluteCommand; otherwise, <c>false</c>.</returns>
    protected virtual bool CanNavigateAbsoluteCommandExecute(string uri)
    {
        return !String.IsNullOrEmpty(uri);
    }

    /// <summary>
    /// Determines whether this instance can execute the NavigateAbsoluteCommand.
    /// </summary>
    /// <param name="uri">The uri.</param>
    /// <returns><c>true</c> if this instance can execute NavigateAbsoluteCommand; otherwise, <c>false</c>.</returns>
    protected virtual bool CanNavigateCommandExecute(string uri)
    {
        return !String.IsNullOrEmpty(uri);
    }

    /// <summary>
    /// Determines whether this instance can execute the NavigateModalCommand.
    /// </summary>
    /// <param name="uri">The uri.</param>
    /// <returns><c>true</c> if this instance can execute NavigateModalCommand; otherwise, <c>false</c>.</returns>
    protected virtual bool CanNavigateModalCommandExecute(string uri)
    {
        return !String.IsNullOrEmpty(uri);
    }

    /// <summary>
    /// Determines whether this instance can execute the NavigateNonModalCommand.
    /// </summary>
    /// <param name="uri">The uri.</param>
    /// <returns><c>true</c> if this instance can execute NavigateNonModalCommand; otherwise, <c>false</c>.</returns>
    protected virtual bool CanNavigateNonModalCommandExecute(string uri)
    {
        return !String.IsNullOrEmpty(uri);
    }

    /// <summary>
    /// <p>Invoked by Prism Navigation when the instance is removed from the navigation stack.</p>
    /// <p>Deriving class can override and perform any required clean up.</p>
    /// </summary>
    public virtual void Destroy()
    {
    }

    /// <summary>
    /// Navigates to the uri after creating a new navigation root. (Effectively replacing the Application MainPage.)
    /// </summary>
    /// <param name="uri">The uri text.</param>
    /// <returns>Task.</returns>
    protected virtual async void NavigateAbsoluteCommandExecute(string uri)
    {
        if (!CanNavigateAbsoluteCommandExecute(uri))
        {
            return;
        }
        if (!uri.StartsWith(RootUriPrependText))
        {
            uri = string.Concat(RootUriPrependText, uri);
        }
        await this.NavigationService.NavigateAsync(uri, null, false,false);
    }

    /// <summary>
    /// Navigates to the uri.
    /// </summary>
    /// <param name="uri">The uri text.</param>
    /// <returns>Task.</returns>
    protected virtual async void NavigateCommandExecute(string uri)
    {
        if (!CanNavigateCommandExecute(uri))
        {
            return;
        }
        await this.NavigationService.NavigateAsync(uri);
    }

    /// <summary>
    /// Navigates to the uri using a Modal navigation.
    /// </summary>
    /// <param name="uri">The uri text.</param>
    /// <returns>Task.</returns>
    protected virtual async void NavigateModalCommandExecute(string uri)
    {
        if (!CanNavigateModalCommandExecute(uri))
        {
            return;
        }
        await this.NavigationService.NavigateAsync(uri,null, useModalNavigation: true,animated:false);
    }

    /// <summary>
    /// Navigates to the uri using Non-Modal navigation.
    /// </summary>
    /// <param name="uri">The uri text.</param>
    /// <returns>Task.</returns>
    protected virtual async void NavigateNonModalCommandExecute(string uri)
    {
        if (!CanNavigateNonModalCommandExecute(uri))
        {
            return;
        }
        await this.NavigationService.NavigateAsync(uri,null, useModalNavigation: false,false);
    }

    /// <summary>
    /// Invoked by Prism immediately after the ViewModel has been created.
    /// </summary>
    /// <param name="parameters">The parameters.</param>
    public virtual void InitializeAsync(INavigationParameters parameters)
    {
        
    }

    /// <summary>
    /// Invoked by Prism after navigating away from viewmodel's page.
    /// </summary>
    /// <param name="parameters">The parameters.</param>
    public virtual void OnNavigatedFrom(INavigationParameters parameters)
    {
    }

    /// <summary>
    /// Invoked by Prism after navigating to the viewmodel's page.
    /// </summary>
    /// <param name="parameters">The parameters.</param>
    public virtual void OnNavigatedTo(INavigationParameters parameters)
    {
    }

   

    public virtual void  Initialize(INavigationParameters parameters)
    {
         
    }
}
}
使用系统;
使用系统组件模型;
使用棱镜;
使用Prism.命令;
使用Prism.Mvvm;
使用棱镜导航;
使用Xamarin.Essentials;
使用Xamarin.Forms;
命名空间bla.Infrastructure{
公共抽象类AppMapViewModelBase:BindableBase、IIInitialize、INavigationAware、IConfirmNavigation、IDestructible
{
私人厕所很忙;
公共图书馆很忙
{
get=>\你很忙;
set=>SetProperty(ref\u isBusy,value);
}
私有整数(cartItemCount);;
公共整数项计数
{
//获取=>\u密码;
获取{return App.Current.CartItemCount;}
//set=>SetProperty(ref\u cartItemCount,value);
设置
{
_cartItemCount=值;
App.Current.CartItemCount=值;
RaisePropertyChanged();
}
}
常量字符串RootUriPrependText=“/”;
DelegateCommand _navigateAbsoluteCommand;
DelegateCommand _navigateCommand;
DelegateCommand _navigateModalCommand;
DelegateCommand _navigateNonModalCommand;
私人楼宇未连接;
公共广播未连接
{
得到
{
如果(DesignMode.IsDesignModeEnabled)
{
返回false;
}
其他的
{
返回未连接;
}
}
设置
{
SetProperty(参考未连接,值);
}
}
/// 
///获取“绝对导航”命令。
/// 
///“绝对导航”命令。
public DelegateCommand NavigateAbsoluteCommand=>\u NavigateAbsoluteCommand???(\u NavigateAbsoluteCommand=new DelegateCommand(NavigateAbsoluteCommand执行,CanNavigateAbsoluteCommandExecute));
/// 
///获取导航命令。
/// 
///导航命令。
public DelegateCommand NavigateCommand=>_NavigateCommand??(_NavigateCommand=new DelegateCommand(NavigateCommandExecute,CanNavigateCommandExecute));
/// 
///获取导航模式命令。
/// 
///导航模式命令。
public DelegateCommand NavigateModalCommand=>_NavigateModalCommand??(_NavigateModalCommand=new DelegateCommand(NavigateModalCommandExecute,CanNavigateModalCommandExecute));
/// 
///获取导航非模式命令。
/// 
///导航非模态命令。
public DelegateCommand NavigateNonModalCommand=>_NavigateNonModalCommand??(_NavigateNonModalCommand=新DelegateCommand(NavigateNonModalCommandExecute,CanNavigateNonModalCommandExecute));
/// 
///获取导航服务。
/// 
///导航服务。
受保护的INavigationService导航服务{get;}
/// 
///初始化类的新实例。
/// 
///导航服务。
///导航服务
受保护的AppMapViewModelBase(INavigationService navigationService)
{
如果(导航服务==null)
{
抛出新ArgumentNullException(nameof(navigationService));
}
this.NavigationService=导航服务;
连接性.ConnectivityChanged+=连接性_ConnectivityChanged;
IsNotConnected=Connectivity.NetworkAccess!=NetworkAccess.Internet;
}
无效连接\u ConnectivityChanged(对象发送方,ConnectivityChangedEventArgs e)
{
if(例如NetworkAccess!=NetworkAccess.Internet)
{
//NavigationService.NavigationAsync(“NavigationPage/NoInternet”);
}
IsNotConnected=e.NetworkAccess!=NetworkAccess.Internet;
}
/// 
///确定此实例是否接受从中导航。此方法在导航操作之前由Prism调用,并且是IConfirmNavigation的成员。
/// 
///导航参数。
///如果导航可以继续,则为True;如果导航不允许继续,则为False
公共虚拟布尔CanNavigate(INavigationParameters)
{
返回true;
}
/// 
///确定此实例是否可以执行NavigateAbSolutionCommand。
/// 
///uri。
///如果此实例可以执行NavigateAbSolutionCommand,则为true;否则为false。
受保护的虚拟布尔CanNavigateAbsoluteCommandExecute(字符串uri)
{
return!String.IsNullOrEmpty(uri);
}
/// 
///确定此实例是否可以执行NavigateAbSolutionCommand。
/// 
///uri。
///如果此实例可以执行NavigateAbSolutionCommand,则为true;否则为false。
受保护的虚拟布尔CanNavigateCommandExecute(字符串uri)
{
return!String.IsNullOrEmpty(uri);
}
/// 
///确定此实例是否可以执行NavigateModalCommand。
/// 
///uri。
///如果此实例可以执行NavigateModalCommand,则为true;否则为false。
受保护的虚拟布尔CanNavigateModalCommandExecute(字符串uri)
{
return!String.IsNullOrEmpty(uri);
}
/// 
///确定此实例是否可以执行navigateNMODALL命令。
/// 
///uri。
///如果此实例可以执行NavigateNonModalCommand,则为true;否则为false。
受保护的虚拟布尔CanNavigateNonModalCommandExecute(字符串uri)
{
return!String.IsNullOrEmpty(uri);
}
/// 
///从导航堆栈中删除实例时,Prism Navigation将调用该实例

///派生类可以重写并执行任何所需的清理

/// 公共虚拟空间销毁() { } /// ///导航到uri
     public override void OnNavigatedFrom (INavigationParameters navigationParameters)
     {
     }