繁体   English   中英

如何将Page1.xaml打开到MainWindow.xaml中

[英]How to open Page1.xaml into MainWindow.xaml

我有一个正在使用的非常简单的桌面应用程序,但是在执行一些基本任务时遇到了问题。 我正在使用Visual Studio 2013。

我已经从空白的WPF模板创建了一个项目。 我创建了一个名为Page1.xaml的新页面,以与默认的MainWindow.xaml窗口一起使用。

在我的MainWindow.xaml窗口中,有网格,并且网格内是一个图像。

<Grid MouseDown="Grid_MouseDown_1" Cursor="Hand" >
    <Image Name="ImageIntro" Source="images/Stories-intro.jpg" Stretch="None" />
</Grid>

网格具有MouseDown事件,因此我可以检测到用户何时单击网格内的任何位置。

private void Grid_MouseDown_1(object sender, MouseButtonEventArgs e)
    {

    }

非常基本,所有工作和编译均按预期进行。

我的问题是我无法在MainWindow.xaml的窗口中加载Page1.xaml。 我不想打开单独的窗口,我只想将Page1.xaml上的内容显示在MainWindow.xaml的可见窗口内。

我尝试使用以下内容,但在链接上单击时出现错误:发生类型为'System.NullReferenceException'的未处理异常

private void Grid_MouseDown_1(object sender, MouseButtonEventArgs e)
    {
        Uri uri = new Uri("Page1.xaml", UriKind.Relative);
        NavigationService ns = NavigationService.GetNavigationService(this);
        ns.Navigate(uri);            
    }

这不是浏览器应用程序,只是桌面应用程序。 第一个屏幕(MainWindow.xaml)应该只单击以显示第二个屏幕(Page1.xaml)。

我希望Page1.xaml内容占据MainWindow.xaml的整个窗口(很抱歉,但是我不能强调足够,我不希望MainWindow.xaml中的框架或任何内容显示用户何时在Page1上.xaml)。

我是桌面应用程序的新手,但是我对.net C#的Web应用程序有广泛的了解。 如果有更好的方法可以实现这一目标,我不反对改变自己的工作流程。 例如,也许我不应该使用“窗口到页面”导航,而应该使用“窗口到窗口”或其他方法。

我想这将是一个相对简单的任务,但是我还没有找到任何可行的方法,因此希望这里的人能够解释它。

阅读此MSDN链接,对于工作的要求说, this (在你的代码)必须是一个Frame 我在这里看不到任何XAML代码,但是我猜this是一个窗口。 您需要一个框架来承载导航,因此您的MainWindow应该可能只是该框架,而当前窗口的内容应为“ Page0”。

在主窗口中创建框架

然后在您的事件处理程序中

  Page1 mypage=new Page1();//object of the page 1

  frame.Navigate(mypage);//pass it to frame navigate method

谢谢大家的帮助,这是我使用的解决方案(我想确保将来有同样问题的任何人都可以找到一个代码示例)。

我在MainWindow.xaml页面中添加了一个框架:

<Grid MouseDown="Grid_MouseDown_1" Cursor="Hand" >
    <Image Name="ImageIntro" Source="images/Stories-intro.jpg" Stretch="None" />
    <Frame Name="Frame1" Content="" HorizontalAlignment="Left" VerticalAlignment="Top"/>
</Grid>

然后,我在活动中添加了以下内容:

private void Grid_MouseDown_1(object sender, MouseButtonEventArgs e)
    {
        Page1 mypage = new Page1();
        Frame1.Navigate(mypage);
    }

这使我可以单击链接,然后出现新页面Page1.xaml。 顶部也有一个导航栏,内容没有完全占用MainWindow.xaml窗口,但我想我可以随意修改设置并将其放到所需位置。

非常感谢Filippo B,Nauman Ahmad和CodingGorilla的协助。

暂无
暂无

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

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