2017-04-22 103 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

相关问题