2012-05-16 59 views
0

我正在寫這種方法來跟蹤頁面上是否發生了變化,以便用戶可以觸發從屬系統的重新加載。因此,您可以在用戶嘗試從頁面導航時看到觸發器。如果e.Cancel不在那裏,那麼異步Web服務調用就像預期的那樣發生,但我不確定後面發生了什麼。Silverlight回調神祕行爲

重新加載按鈕單擊方法會觸發通常更新顯示的事件鏈,但由於用戶導航離開頁面,組件不再可見。這會對應用程序造成問題嗎?我應該強迫用戶保持在同一頁面上,以防止可能的回調問題?

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); 
      } 
     } 
    } 
+0

你試過重寫OnBackKeyPress方法,如果你擔心他們打了退堂鼓頁面。 –

+0

你是說當我按下後退按鈕時,我的頁面以前的狀態恢復了嗎?所以當我回來時我不再運行構造函數? – Stainedart

+0

您可以重寫OnBackkeyPress方法,如果當時取消頁面上的任何內容都不會發生更改,則頁面本身仍然存在 –

回答

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); 
     } 
    } 
}