gpt4 book ai didi

c# - 如何在 silverlight 导航应用程序中检测后退按钮或前进按钮导航

转载 作者:太空狗 更新时间:2023-10-29 21:51:14 25 4
gpt4 key购买 nike

当在 silverlight 中导航到页面时,您可以覆盖此方法。

protected override void OnNavigatedTo(NavigationEventArgs e)
{
base.OnNavigatedTo(e);
}

NavigationEventArgs 有一个 NavigationMode 枚举,定义为

public enum NavigationMode
{
New = 0,
Back = 1,
Forward = 2,
Refresh = 3,
}

但是调用 e.NavigationMode 总是抛出一个 NotImplementedException

在 silverlight 中是否有一种方法可以检测由于用户点击前进/后退浏览器按钮而被导航到的页面。

我想要实现的是某种在用户点击后退按钮时可以保留的状态。

例如,假设您有一个客户页面,它在数据网格中显示客户列表。用户可以选择一个客户,并且有一个详细 View 显示该客户的所有订单。现在,在订单项目中,您可以单击一个超链接链接,将您带到订单的运输历史记录,这是一个单独的页面。当用户点击后退按钮时,我想返回客户页面并自动选择他正在查看的客户。这可能吗?

我也尝试了片段导航功能

NavigationService.Navigate(new Uri("#currentcustomerid=" 
+ customer.Id.ToString(), UriKind.Relative));

当客户选择发生变化,但当用户在客户页面上单击多个客户时,这会向历史记录添加太多项目。

编辑

还有一个方法你可以覆盖

protected override void OnNavigatingFrom(NavigatingCancelEventArgs e)
{
}

这与 BugFinder 的回答所指示的处理 NavigationService.Navigating 事件相同。在此方法中,当您点击后退或前进按钮时,e.NavigationMode 总是返回 New。此方法唯一一次返回 Back 是在您显式调用 NavigationService.GoBack()

最佳答案

public enum NavigationMode 
{
New = 0,
Back = 1,
Forward = 2,
Refresh = 3,
}

应用于导航事件..

如果我这样做

_ns.Navigating += ns_Navigating;
void ns_Navigating(object sender, NavigatingCancelEventArgs e)
{

if (SecurityCheck(e.Uri.OriginalString)) return;
e.Cancel = true;
ShowError("You are not authorised to view this page");
}

我可以看到 e.NavigationMode 已设置。你可以在那里做测试吗?

关于c# - 如何在 silverlight 导航应用程序中检测后退按钮或前进按钮导航,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12218384/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com