将数据透视项转换为用户控件以提高 WP7 中的加载性能

本文关键字:WP7 性能 加载 控件 透视 数据 转换 用户 | 更新日期: 2023-09-27 18:32:32

My MainPage.xaml 是一个包含 3 个透视项的数据透视页面。目前,它正在为 MainPage 构造函数上的每个数据透视项加载所有必要的内容。这很糟糕,因为它加载了很多不必要的东西。

在这里和这里阅读建议我只加载第一个数据透视项,并在加载后加载其余项。具体说来:

通过按需加载透视控件内容而不是在启动时加载所有内容来提高透视应用程序的性能。一种解决方案是从每个数据透视项控件中获取内容并转换为用户控件。然后,您可以订阅根透视控件上的 LoadPivotItem 事件。接下来,在事件处理程序中,实例化正确的用户控件并将其设置为数据透视项内容。

如果我遵循建议:

private void OnLoadingPivotItem(object sender, PivotItemEventArgs e)
{
if (e.Item.Content != null)
{
    // Content loaded already
    return;
}
Pivot pivot = (Pivot)sender;
if (e.Item == pivot.Items[0])
{
    e.Item.Content = new Page1Control();
}
else if (e.Item == pivot.Items[1])
{
    e.Item.Content = new Page2Control();
}
else if (e.Item == pivot.Items[2])
{
    e.Item.Content = new Page3Control();
}
}

我应该使用创建类页面XControl ?它应该以某种方式从主页类继承吗?

如何从每个数据透视项控件中获取内容并将其转换为用户控件?

谢谢

将数据透视项转换为用户控件以提高 WP7 中的加载性能

将数据透视项的内容提取到用户控件中实际上非常简单。首先,为每个透视项创建一个新的用户控件。然后将数据透视项的内容从数据透视项移动到用户控件中。然后,按照指定的 OnLoadingPivotItem 方法创建控件。我在 GitHub 上创建了一个小项目来向您展示如何做到这一点。请参阅:https://github.com/ErikSchierboom/pivotcontentdemo

如您所见,我从基类派生了 UserControls,因为它们在语义上是相同的。但是,这绝不是必需的,只需从用户控件继承即可。

我更喜欢这种方法,而不是将数据透视项本身提取到自定义控件中的方法。

您可以创建自己的透视项,这些项将从透视项继承。我基于 VS 中的默认 Pivot 项目整理了一个示例,它将两个 Pivot 项目拆分为它们自己的类:-

http://www.smartmobiledevice.co.uk/projects/PivotItemUserControlSample.zip