忽略点击,直到页面完全加载

时间:2017-04-22 08:51:43

标签: c# uwp windows-phone windows-10-mobile

我的page1有一个打开page2的按钮。 Page2打开大约需要1秒钟,其中包含一个选项列表(用户控件),当点击时,保存选择并将用户返回到page1。

当用户点击第1页上的按钮时,如果他们变得不耐烦,他们将在加载/显示第2页之前再次点击它。问题是,即使它尚未可见,也会识别点击并点击第2页上的第一个选项。然后保存选择并将用户返回到page1。

无论如何,我可以停止识别点击/点击事件,直到page2完全加载?

1 个答案:

答案 0 :(得分: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));
    }
}