我有一个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秒的良好可见延迟。
如果我在启动时直接加载页面,那么应用程序会在几秒钟内加载。
为什么在页面导航上添加元素需要花费很多时间?
答案 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);
});
}
}