Silverlight回调神秘行为

时间:2012-05-16 18:13:28

标签: c# silverlight events event-handling navigation

我正在编写此方法以跟踪页面上是否发生更改,以便用户可以触发重新加载从属系统。因此,当用户尝试离开页面时,您可以看到触发器。如果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);
            }
        }
    }

1 个答案:

答案 0 :(得分:0)

不使用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);
        }
    }
}