2017-04-22 51 views
1

我有頁面1和一個打開page2的按鈕。 Page2大約需要1秒鐘才能打開,幷包含一個選項列表(用戶控件),當點擊時,保存選擇並將用戶返回到page1。直到頁面完全加載後才忽略分流

當用戶點擊page1上的按鈕時,如果他們變得不耐煩,他們會在page2加載/顯示之前再次點擊它。問題是,點擊被識別並且第2頁上的第一個選項被點擊,儘管它還不可見。然後這保存選擇並將用戶返回到page1。

反正我可以阻止點擊/點擊事件被識別,直到page2完全加載?

回答

0

一個想法可能是訂閱點擊/第一頁上單擊事件OnNaviagatedTo,那裏面點擊/點擊事件取消它,這樣用戶將無法再次點擊它。然後當他回航時,OnNavigatedTo再次訂閱。你也可以考慮一下將設置的標誌點擊/點擊並解除加載第二頁事件。示例:

public sealed partial class MainPage : Page 
{ 
    public MainPage() 
    { 
     this.InitializeComponent(); 
    } 

    protected override void OnNavigatedTo(NavigationEventArgs e) 
    { 
     Debug.WriteLine("OnNavigatedTo"); 
     base.OnNavigatedTo(e); 
     this.button.Click += Button_Click; 
    } 

    private async void Button_Click(object sender, RoutedEventArgs e) 
    { 
     (sender as Button).Click -= Button_Click; 
     await Task.Delay(1000); // simulate heavy load of second page 
     this.Frame.Navigate(typeof(SecondPage)); 
    } 
} 
+0

好主意 - 我現在就試試。 – Rick

+0

其實 - 我不認爲這會起作用,因爲它不是頁面1上按鈕的第二次敲擊導致的問題 - 這是用戶認爲是頁面1上的按鈕的第二次敲擊,但實際上是頁面2上的控件的輕擊 - 但你對第2頁上的標誌的想法應該做到這一點。 – Rick

+0

@Rick頁面加載需要多長時間?也許你可以在繁重的工作或* Loaded *事件之後的第二頁中訂閱活動? – Romasz

相關問題