我有一个XAML页面,它创建了一个48x48图像的网格(一个图像拼贴)。当用户导航到此页面时,我加载了拼贴的配置,并将项目添加到C#中的网格中,并设置其Grid.Row和Grid.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秒。
在这里,如果我在启动时直接加载页面,应用程序在几秒钟内就可以正常加载。
为什么在页面导航上添加元素要花很多时间?
发布于 2018-01-14 16:03:08
因为我认为ImageCell使用了太多的时间,你应该让UI在导航中做出响应。
在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);
});
}
}https://stackoverflow.com/questions/48244326
复制相似问题