页面导航期间UWP页面加载时间较慢

时间:2018-01-13 21:08:48

标签: c# xaml uwp win-universal-app

我有一个XAML页面,可以创建一个48x48图像的网格(图像拼贴)。当用户导航到此页面时,我会加载拼贴的配置,并在C#中将项目添加到网格中,并设置他们的Grid.RowGrid.Column字段。像这样:

private void InitializeGrids()
{
    // Set row definitions and column definitions
    // ...

    for (int i = 0; i < dimensions; i++)
    {
        for (int j = 0; j < dimensions; j++)
        {
            var cell = new ImageCell()
            {
                Row = i,
                Column = j
            };
            Grid.SetRow(cell, i);
            Grid.SetColumn(cell, (j * 10));
            Contents.Children.Add(cell);
        }
    }
}

当用户通过点击其他页面的按钮导航到此页面时,我看到大约8-10秒的良好可见延迟。

如果我在启动时直接加载页面,那么应用程序会在几秒钟内加载。

为什么在页面导航上添加元素需要花费很多时间?

1 个答案:

答案 0 :(得分:0)

因为我认为ImageCell使用的时间太长,你应该让UI在Navigate中做出响应。

在WinForm中,我们可以使用PushFrame,我们应该花费一些UI线程资源。但在UWP中,我们可以使用Dispatcher.RunIdleAsync

尝试使用代码

    for (int i = 0; i < dimensions; i++)
        {
            for (int j = 0; j < dimensions; j++)
            {
                await Dispatcher.RunIdleAsync(o =>
                {
                    var cell = new ImageCell()
                    {
                        Row = i,
                        Column = j
                    };
                    Grid.SetRow(cell, i);
                    Grid.SetColumn(cell, j);
                    Grid.Children.Add(cell);
                });
            }
        }