【问题标题】:Silverlight callback mystery behaviorSilverlight 回调神秘行为
【发布时间】:2012-05-16 18:13:27
【问题描述】:

我正在编写此方法来跟踪页面上是否发生更改,以便用户可以触发依赖系统的重新加载。因此,当用户尝试离开页面时,您可以看到触发器。如果 e.Cancel 不存在,则行为似乎很好,异步 Web 服务调用按预期发生,但我不确定后面到底发生了什么。

重新加载按钮单击方法会触发一系列事件,这些事件通常会更新显示,但由于用户已离开页面,因此组件不再可见。这会给应用程序带来问题吗?我是否应该强迫用户留在同一页面上以防止可能出现的回调问题?

    protected override void OnNavigatingFrom(NavigatingCancelEventArgs e)
    {
        base.OnNavigatingFrom(e);
        if (hasDataBeenModified)
        {
            if (System.Windows.Browser.HtmlPage.Window.Confirm("You have not reloaded the policies\nDo you want to do it now?"))
            {
                //e.Cancel = true;
                ReloadButton_Click(null, null);
            }
        }
    }

【问题讨论】:

  • 如果您担心它们退出页面,您是否尝试过覆盖 OnBackKeyPress 方法。
  • 你是说当我点击后退按钮时,我之前的页面状态恢复了吗?所以当我回击时,我不会再次运行构造函数?
  • 你可以重写 OnBackkeyPress 方法,如果你取消,页面上的任何内容都不会改变,页面本身仍然存在

标签: c# silverlight events event-handling navigation


【解决方案1】:

不要使用 OnNavigatingFrom,而是使用 OnBackKeyPress

protected override void OnBackKeyPress(CancelEventArgs e)
{
    if (hasDataBeenModified)
    {
        if (System.Windows.Browser.HtmlPage.Window.Confirm("You have not reloaded the policies\nDo you want to do it now?"))
        {
            e.Cancel = true;
            ReloadButton_Click(null, null);
        }
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-01-13
    • 1970-01-01
    • 2012-05-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-03
    • 2019-12-01
    相关资源
    最近更新 更多