Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/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# 如何导航到同一解决方案中的另一个项目_C#_Visual Studio 2012_Mvvm_Windows Phone 8_Navigationservice - Fatal编程技术网

C# 如何导航到同一解决方案中的另一个项目

C# 如何导航到同一解决方案中的另一个项目,c#,visual-studio-2012,mvvm,windows-phone-8,navigationservice,C#,Visual Studio 2012,Mvvm,Windows Phone 8,Navigationservice,希望有人能帮忙 我在团队中开发了许多不同的项目,现在我们希望将这些结合起来。因此,我将这些项目包括在内。 在启动项目中,我包括了对其他项目的引用。 然后我使用另一个stackoverflow线程的代码: 这给了我以下信息 NavigationService.Navigate(new Uri("/MVVMTestApp;/component/View/MainPage.xaml", UriKind.Relative)); 项目构建并运行。但是当我按下应该激活代码的按钮时,我在执行该行之

希望有人能帮忙

我在团队中开发了许多不同的项目,现在我们希望将这些结合起来。因此,我将这些项目包括在内。 在启动项目中,我包括了对其他项目的引用。 然后我使用另一个stackoverflow线程的代码:

这给了我以下信息

    NavigationService.Navigate(new Uri("/MVVMTestApp;/component/View/MainPage.xaml", UriKind.Relative));
项目构建并运行。但是当我按下应该激活代码的按钮时,我在执行该行之后/期间收到一个错误

中断错误位于MainPage.g.cs文件中,该文件如下所示:

namespace MVVMTestApp {


public partial class MainPage : Microsoft.Phone.Controls.PhoneApplicationPage {

    internal System.Windows.Controls.TextBlock MainPageTitle;

    internal System.Windows.Controls.TextBlock LEgE;

    private bool _contentLoaded;

    /// <summary>
    /// InitializeComponent
    /// </summary>
    [System.Diagnostics.DebuggerNonUserCodeAttribute()]
    public void InitializeComponent() {
        if (_contentLoaded) {
            return;
        }
        _contentLoaded = true;
        *******System.Windows.Application.LoadComponent(this, new System.Uri("/MVVMTestApp;component/View/MainPage.xaml", System.UriKind.Relative));**
        this.MainPageTitle = ((System.Windows.Controls.TextBlock)(this.FindName("MainPageTitle")));
        this.LEgE = ((System.Windows.Controls.TextBlock)(this.FindName("LEgE")));
    }
}
}
在项目之间导航。但是,在生成的xaml文件FILENAME.g.cs中插入line loadcomponent时会出现错误。据我所知,发生错误的原因是视图由datacontext连接到viewmodel。我一直没能解决这个问题


希望有人能解决这个问题?

解决方案1:

您使用相同类型的项目“Windows Phone App”。在解决方案中,您需要有一个Windows Phone应用程序项目,其他项目的类型应为Windows Phone类库

然后,您可以使用以下代码行导航到同一解决方案内的另一个项目中的视图:

    NavigationService.Navigate(new Uri("/MVVMTestApp;/component/View/MainPage.xaml", UriKind.Relative));
 NavigationService.Navigate(new Uri("/MVVMTestApp;/component/View/MainPage.xaml", UriKind.Relative));
解决方案2:

转到调试中的配置管理器

取消选中MVVMTestApp中的部署复选框


首先,您必须引用父项目,然后

你可以通过这条线解决这个问题

  NavigationService.Navigate(new
 Uri("/MVVMTestApp;/View/MainPage.xaml", UriKind.Relative));
只需在“组件”之前删除“/”,如下所示:


NavigationService.Navigate(新Uri(“/MVVMTestApp;component/View/MainPage.xaml”,UriKind.Relative))

我认为问题在于你的设置。根据您的描述,您可以将项目命名为MVVMTestApp。我想这是一个启动项目。但是,您的引用是从TestUserControls到MVVMTestApp。这是倒退。我知道,根据您试图做的事情,它似乎是正确的,但事实并非如此(除非您的项目命名混乱)

我建议您有两个项目:

  • MVVMTestApp(正在启动的Windows Phone 8.1通用应用程序 (项目)
  • MVVMTestApp.Lib(支持Windows Phone的可移植类 8.1)
添加从MVVMTestApp到MVVMTestApp.Lib的引用

MVVMTestApp将具有MainPage.xaml和SecondPage.xaml

我建议您的库只有共享的用户控件,而没有要导航到的页面。您可以将用户控件放在第二页上

如果您确实希望在共享库中包含第二个页面,那么它将更难处理,但仍然是可能的。但是,您将无法使用其他人建议的代码。让共享代码调用MVVMTestApp是没有意义的,因为这样它就不能真正共享。如果您有另一个与之共享的应用程序,名为MVVMTestApp2,该怎么办。如果使用MVVMTestApp硬编码,则无法工作,即使使用MVVMTestApp,也可以使其工作,因此,将第二页放在单独的项目中不会有任何好处

要有一个可共享的页面来调用应用程序,我想你有两个选择。您可以使用控制反转并在Lib中定义INavigationService。然后在MVVMTestApp中实现InavgateService,并使用您最喜欢的Ioc容器注册您的实现。然后,在Lib中,您可以调用INavigationService上的方法。在MVVMTestApp实现中,您可以使用其他文章中提供的代码导航到主页面

另一种选择是在Lib中公开事件。您可以从MVVMTestApp中侦听事件,并在处理程序中导航到MainPage,就像在其他文章中一样。在Lib中,当您想要导航到MainPage时,您将引发事件

祝你好运,玩得开心


汤姆

添加/之前component@techloverr谢谢,这解决了错误,但现在我在RootFrame_NavigationFailed中遇到另一个错误。“未找到XAML…”。我的启动项目是TestUserControls,我想去的项目是MVVMTestApp,路径如上图所示。你知道这个错误吗?这个错误是在我想从哪个项目开始的app.xaml.cs文件中发现的page@techloverr我从项目TestUserControl开始。第1页:第一页,导航到第2页:动画页,我在那里做一些启动动画,第3页:菜单概述。在菜单中,我单击一个按钮并使用navigationservice转到新项目MVVMTestApp。出现新错误。在MVVMTestApp中,视图位于何处?我无法从其他项目中访问该名称?@JTIM您需要在xaml中为尝试导航的视图命名。仍然没有帮助,我需要在组件之前包含一个正斜杠,这样就不会得到XamlParseException,因为在该位置没有xaml文件。这很奇怪。@JTIM你能为你的解决方案结构做一个屏幕截图吗?我现在正在尝试,它给出了相同的错误,即在该位置没有找到XAML。你说的父项目是什么意思?我希望不必像其他解决方案那样更改库