Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/xamarin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何使用Fresh.MVVM浏览Xamarin.Forms中的模式页面_C#_Xamarin_Xamarin.forms_Freshmvvm - Fatal编程技术网

C# 如何使用Fresh.MVVM浏览Xamarin.Forms中的模式页面

C# 如何使用Fresh.MVVM浏览Xamarin.Forms中的模式页面,c#,xamarin,xamarin.forms,freshmvvm,C#,Xamarin,Xamarin.forms,Freshmvvm,当按下按钮时,我正试图使用MVVM在我的xamarin forms应用程序中按下一个模式页面。我已经知道如何使用导航堆栈,但不知道如何将内容页面作为模式页面使用,我尝试了多种方法,特别是调用PushPageModel方法 这是我最后一次尝试: 视图或页面: <Label x:Name="forgottenPasswordLabel" Text="Forgot password?" TextCol

当按下按钮时,我正试图使用MVVM在我的xamarin forms应用程序中按下一个模式页面。我已经知道如何使用导航堆栈,但不知道如何将内容页面作为模式页面使用,我尝试了多种方法,特别是调用PushPageModel方法

这是我最后一次尝试: 视图或页面:

<Label
                x:Name="forgottenPasswordLabel"
                Text="Forgot password?"
                TextColor="LightPink"
                FontSize="16"
                FontAttributes="Bold"

                VerticalOptions="Start"
                HorizontalOptions="End"
                Margin="25,0,25,25">
                <Label.GestureRecognizers>
                    <TapGestureRecognizer Command="{Binding ForgotPasswordCommand}"/>
                </Label.GestureRecognizers>
</Label>

ViewModel类:

public class LogInViewModel : FreshBasePageModel
    {
        public ICommand ForgotPasswordCommand { get; set; }

        public LogInViewModel()
        {
        }

        public override void Init(object initData)
        {
            ForgotPasswordCommand = new Command (async() =>
            {
                var newPage = FreshPageModelResolver.ResolvePageModel<ForgottenPasswordViewModel>();
                await CoreMethods.PushPageModel<ForgottenPasswordViewModel>(null, false, true);
            }); 
        }
    }
公共类LogInViewModel:FreshBasePageModel
{
公共ICommand ForgotPasswordCommand{get;set;}
公共登录视图模型()
{
}
公共重写void Init(对象initData)
{
ForgotPasswordCommand=新命令(异步()=>
{
var newPage=FreshPageModelResolver.ResolvePageModel();
等待corethods.PushPageModel(null、false、true);
}); 
}
}
App.xaml.cs类:

public App()
        {
            InitializeComponent();

            MainPage = FreshPageModelResolver.ResolvePageModel<LogInViewModel>();
        }
public应用程序()
{
初始化组件();
MainPage=FreshPageModelResolver.ResolvePageModel();
}
此代码给出以下错误:“FreshTinyIoC.TinyIoCResolutionException:'解析失败:IFreshNavigationService”

就这些,如果您需要更多的信息,我会在看到您的请求后尽快提供,谢谢您的时间,希望您有一个美好的一天

编辑:请求堆栈跟踪:

在C中的FreshTinyIoC.FreshTinyIoCContainer.ResolveInternal(FreshTinyIoC.FreshTinyIoCContainer+类型注册,FreshTinyIoC.NamedParameters重载参数,FreshTinyIoC.ResolveOptions)[0x000f7:“路径在这里” 在C:\'中的FreshTinyIoC.FreshTinyIoCContainer.Resolve(System.Type resolveType,System.String name)[0x00000]处,路径如下 在C中的FreshTinyIoC.FreshTinyIoCContainer.Resolve[ResolveType](System.String名称)[0x00000]处:“路径在这里” 在C中的FreshMvvm.FreshTinyIOCBuiltIn.Resolve[ResolveType](System.String name)[0x00000]处:“路径在这里” 在C中的FreshMvvm.PageModelCoreMethods.PushPageModelWithPage(Xamarin.Forms.Page页面,FreshMvvm.FreshBasePageModel页面模型,系统对象数据,系统布尔模式,系统布尔动画)[0x00177:“路径在这里” 在C中的FreshMvvm.PageModelCoreMethods.PushPageModel(FreshMvvm.FreshBasePageModel pageModel,System.Object数据,System.Boolean模式,System.Boolean动画)[0x00048]:“路径在这里” 在C语言中的FreshMvvm.PageModelCoreMethods.PushPageModel[T](System.Object数据、System.Boolean模式、System.Boolean动画)[0x00040]:“路径在这里” 在D:\“路径如下”中的FirstApp.ViewModels.LogInViewModel.b_u5_0()[0x0003a]处


问题是对概念的误解,我认为内容页面和导航页面是两种不同类型的页面,如选项卡页面、主控详细页面、旋转木马页面和内容页面。所以我试图不使用以下代码,认为FreshNavigationContainer强迫我使用导航页面而不是内容页面,这是正确的,但并不完全,因为是的,它强迫你使用导航页面,但你也使用内容页面,因为导航页面是内容页面的一个属性,正如我所说,这完全是对概念的误解:

public partial class App : Application
    {
        public App()
        {
            InitializeComponent();

            var thePage = FreshPageModelResolver.ResolvePageModel<LogInViewModel>();
            MainPage = new FreshNavigationContainer(thePage);
        }
}
公共部分类应用程序:应用程序
{
公共应用程序()
{
初始化组件();
var thePage=FreshPageModelResolver.ResolvePageModel();
主页=新的FreshNavigationContainer(页面);
}
}
我在这个问题上没有这样说,但所有这些的目的都是为了不在屏幕顶部看到一个栏,现在我明白了,因为导航页面和内容页面不是两件不同的事情,所以可以在page.xaml中使用:

<ContentPage NavigationPage.HasNavigationBar="False">


根据我对例外情况的理解,您的
放弃的PasswordViewModel
或视图中存在导致此问题的内容,有可能引发异常,或者您没有遵循文件夹结构或
FreshMVVM
现在,为了让我们更容易理解这一点,您必须在此处添加此异常的Stracktrace@FreakyAli如何获取异常的堆栈跟踪抛出异常时在catch块中添加try catch块异常对象包含堆栈跟踪!如果您有例外,这是开始查找问题的最佳位置@我用StackTrace更新了这个问题!找不到IFreshNavigationService的实例,因此我认为您没有正确初始化FreshMVVM。在某些时候,TinyIOC需要被告知如何实例化导航服务。我也怀疑它是否适用于非模态页面。