【问题标题】:Convert PivotItem into Usercontrol to improve loading performance in WP7将 PivotItem 转换为 Usercontrol 以提高 WP7 中的加载性能
【发布时间】:2012-04-29 14:40:09
【问题描述】:

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

阅读 herehere 建议我只加载第一个 PivotItem,然后在加载后加载其余项目。具体来说:

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

如果我遵循建议:

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();
}
}

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

如何从每个 PivotItem 控件中获取内容并转换为 UserControls ?

谢谢

【问题讨论】:

    标签: c# windows-phone-7


    【解决方案1】:

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

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

    与将 PivotItem 本身提取到自定义控件中的方法相比,我更喜欢这种方法。

    【讨论】:

      【解决方案2】:

      您可以创建自己的 Pivot 项目,该项目将从 PivotItem 继承。我已经根据 VS 中的默认 Pivot 项目整理了一个示例,它将两个 Pivot 项目拆分为它们自己的类:-

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

      【讨论】:

      • 谢谢。我注意到您使用PivotItem 代替UserControl 作为数据透视页面代码。有什么区别吗?
      • 我认为如果您将多个控件放在一起形成另一个控件,您会使用 UserControl,但是由于您只对 PivotItem 感兴趣,因此从中派生是有意义的。跨度>
      猜你喜欢
      • 1970-01-01
      • 2021-04-30
      • 2023-04-08
      • 1970-01-01
      • 2017-07-13
      • 2014-03-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多