获取WPF导航NavigationWindow中当前运行的页面
我是 WPF 新手, 我正在开发 WPF 的导航应用程序,
<NavigationWindow x:Class="KioskTraffic.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="768" Width="1024" Source="Home.xaml"
WindowState="Maximized" ResizeMode="NoResize" ShowsNavigationUI="False" WindowStyle="None" Cursor="Arrow" Closing="NavigationWindow_Closing"></NavigationWindow>
并且我有一些页面显示在此 navigarionwindow 中,例如
<Page x:Class="KioskTraffic.Page1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
mc:Ignorable="d"
Height="768" Width="1024"
Title="Page1">
如何知道当前在 NavigationWindow.xaml.cs 文件下运行哪个页面?
我在此导航窗口中有一个计时器,想要检查当前页面是否为 home.xaml,然后我不想启动该计时器。
I m new in WPF,
i am developing a navigation application of WPF,
<NavigationWindow x:Class="KioskTraffic.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="768" Width="1024" Source="Home.xaml"
WindowState="Maximized" ResizeMode="NoResize" ShowsNavigationUI="False" WindowStyle="None" Cursor="Arrow" Closing="NavigationWindow_Closing"></NavigationWindow>
and i have some page which display in this navigarionwindow like
<Page x:Class="KioskTraffic.Page1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
mc:Ignorable="d"
Height="768" Width="1024"
Title="Page1">
How can i know which page is running currently under NavigationWindow.xaml.cs file?
I have a timer in this navigation window that want to check if current page is home.xaml then i don't want to start that timer.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(6)
您可以使用导航窗口的 CurrentSource 属性在代码隐藏中获取当前正在运行的页面。根据您的要求,它是使用 NavigationService.Navigate() 方法完成的,如下所示:
NavWindow.xaml :
NavWindow.xaml.cs :
ShopList.xaml :
ShopList.xaml.cs:
ProductList.xaml:
它对我来说工作正常。希望这能解决您的问题。如果没有解决请随时询问。
更新:
如果您想使用类名而不是 Uri 来导航页面,那么您可以获取当前源,例如:
You can get current running page in code behind using CurrentSource property of navigation window. As per your requirements, it's done using NavigationService.Navigate() method like below :
NavWindow.xaml :
NavWindow.xaml.cs :
ShopList.xaml :
ShopList.xaml.cs :
ProductList.xaml :
It's working fine for me. Hope this solve your problem. Please feel free to ask if it not solve.
UPDATE :
If you want to navigate page using class name instead of Uri then you can get current source like :
我有类似的问题。乌彭德拉上面接受的答案引导我走向正确的方向。我的问题是我在框架内使用不同的 WPF 页面。我需要确定框架内显示的是哪个页面。我是这样想出来的。
如果使用 CurrentPage.ToString(),则 CurrentPage 对象将成为加载页面的类名;
I had a similar problem. Upendra's accepted answer above lead me in the right direction. My problem was I was using different WPF Pages inside a FRAME. I needed to determine what page was being displayed inside the frame. Here's how I figured it out.
The CurrentPage object became the class name of the loaded page if used CurrentPage.ToString();
我通过查看容器窗口的 NavigationService 的 Content 属性找到了当前页面。
I found out my current page by looking at the Content property of the NavigationService of my container window.
如果我们想知道当前页面的完整路径并显示在框架内,那么我们可以使用:
if we want to known current page with full path which display inside frame then we can use that:
在每个页面中使用页面加载事件来删除返回条目并仅显示
页面加载内的当前页面使用NavigationService函数RemoveBackEntry()
Use Page Load Event in Every Page to remove Back Entries and to show only Current Page
Inside Page Load Use NavigationService function RemoveBackEntry()
NavigationWindow
有一个名为CurrentSource
的属性,它是上次导航页面的 URIThe
NavigationWindow
has a property calledCurrentSource
which is the URI of the last page navigated