- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想从我的页面捕获 NavigationService.Navigating 事件,以防止用户向前导航。我有一个这样定义的事件处理程序:
void PreventForwardNavigation(object sender, NavigatingCancelEventArgs e)
{
if (e.NavigationMode == NavigationMode.Forward)
{
e.Cancel = true;
}
}
... 这很好用。但是,我不确定将这段代码放在哪里:
NavigationService.Navigating += PreventForwardNavigation;
如果我将它放在页面的构造函数或 Initialized 事件处理程序中,则 NavigationService 仍然为 null,并且我得到 NullReferenceException。但是,如果我将它放在页面的 Loaded 事件处理程序中,则每次导航到该页面时都会调用它。如果我理解正确,那就意味着我多次处理同一个事件。
我可以多次向事件添加相同的处理程序吗(如果我使用页面的 Loaded 事件来连接它会发生这种情况)?如果没有,在 Initialized 和 Loaded 之间是否有某个地方可以进行此连接?
最佳答案
@Espo 你的链接帮助我找到了解决方法。我称它为解决方法,因为它丑陋,但这是 MS 自己在其文档中所做的:
public MyPage() // ctor
{
InitializeComponent();
this.Loaded += delegate { NavigationService.Navigating += MyNavHandler; };
this.Unloaded += delegate { NavigationService.Navigating -= MyNavHandler; };
}
所以当您的页面卸载时,您基本上必须取消订阅导航服务的事件。
+1 到您帮助我找到它的回复。我似乎无法将自己的回复标记为“已接受的答案”,所以我想我暂时保留它。
关于.net - NavigationService 什么时候初始化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25642/
我试图在代码中从一个页面导航到另一个页面: if (Game.IsShopping) NavigationService.Navigate("ShopPage.xaml", Game.Curr
我创建了一个 Windows Phone 8.1 项目,其中我在不同的代码段中使用了以下代码: if (this.NavigationService.CanGoBack) { this.Nav
我读到有几个人对此有疑问,所以我想发布一个(有点)优雅的解决方案,我在尝试处理这个问题时想出了。问题是当您在 Silverlight 中创建模板页面并且 ContentControls 没有父 Fra
这似乎是一个非常幼稚的问题,但究竟如何从页面外部获取 NavigationService,例如可能是 View 模型?每个人都说导航应该出现在 View 中,但我一直在想,这不是一个网页,它是一个应用
我想从我的页面捕获 NavigationService.Navigating 事件,以防止用户向前导航。我有一个这样定义的事件处理程序: void PreventForwardNavigation(o
我在 WPF NavigationWindow 中托管了一个小示例应用程序。 它有三个页面(A、B、C)和三个按钮可供用户使用:导航窗口上的后退和前进以及第一页上的下一页。 第一页 A 包含两个单选按
我导航到WP7中的第X页。我的ViewModel中有一个对象(我们称其为香蕉),在该对象中进行NavigationService.Navigate调用。 X页面需要引用香蕉。我怎样才能做到这一点? t
我是 C# 编程的新手,我的代码有问题。我创建了一个按钮并在其上应用了一个事件点击,它通过 NavigationService 技术打开了我项目的另一个页面。 这是脚本: private void c
我正在学习 WP 编码,但遇到无法解决的问题:/ try { NavigationService.Navigate(new Uri("/edit.xaml", UriKind.Relativ
我看到很多关于删除后台堆栈的答案。 但是如何删除前向堆栈? 又名,导航 A,到 B,到 C A -> B -> C 然后我从 C 导航回 B(表单保存,C 关闭 NavigationService.G
设想: 我有一个这样的 NavigationWindow 样式: ... 我通
关于在 xamarin 应用程序中使用 autofac 以及何时使用它们的生命周期范围的初学者问题。 正如 autofac 文档 (https://nblumhardt.com/2011/01/an-
我正在处理的项目是一个基于桌面的 WPF 应用程序。我已经在其中实现了 MVVM 模式。我也在其中使用 Unity IoC 和存储库模式。 我在主详细信息类型场景中遇到问题。我导航到详细信息页面(我已
使用 NavigationService.RemoveBackEntry() 我可以从导航堆栈中删除一个条目。有没有一种方便的方法来删除我的应用程序中的所有后退导航项(场景:我有一个由多个页面组成的注
在我的根 View 模型中,我称之为 await _navigationService.NavigateAsync( "/NavigationPage/Page1of2", useMo
我有一个 Windows Phone 7.5 应用程序,它使用 NavigationService.GoBack() 方法在主页(MainPage.xaml,一个 PhoneApplicationPa
如您所见,我想导航到“ScoreInputDialog.xaml”页面,用户可以在其中键入名称。在此之后,我试图将名称保存到列表中,但它始终为空,因为导航到页面“ScoreInputDialog.xa
如果未设置 access_token,我将尝试导航到 MainPage.xaml。 public Menu() { InitializeCo
在调用NavigationService.GoBack()之前我们需要检查NavigationService.CanGoBack是否为真,但是NavigationService.CanGoBack在什
NavigationService.GoBack();我在 viewmodel 中设置了一个变量,然后我想返回,当我返回时我想使用那个变量,但似乎什么都没有运行,我不想刷新那个页面。 有什么想法吗?
我是一名优秀的程序员,十分优秀!