Windows Phone 7控件缓存 - '元素已经是另一个元素的子元素'

时间:2011-01-16 22:24:58

标签: silverlight-4.0 windows-phone-7

我正在尝试加快我的Windows手机7页加载时间。我有一个“静态”页面,它在Panorama控件中动态创建 - 静态意味着内容永远不会改变。

在第一次加载时,我查看我的配置文件,创建各个PanoramaItem控件并将它们添加到主Panorama控件。我正在尝试将List保存在静态位置,以便初始创建只发生一次,我可以在呈现页面时将完全呈现的版本添加到Panorama控件。

首次加载时工作正常,但是当我尝试将缓存的PanoramaItems添加到Panorama控件时,我收到消息“元素已经是另一个元素的子元素”。这是有道理的,因为我之前已经添加过。但我可以看到一种方法来断开PanoramaItems与第一个Panorama控件...

我可能会把控制缓存的事情搞得一团糟......让我知道是否有另一种方法可以做到这一点。

1 个答案:

答案 0 :(得分:0)

您可以将Panorama.Items.Remove(pivotItem)用于此

作为一个例子

使用以下页面字段

PanoramaItem pi;
bool blahShown = false;

按下此按钮,控件首先被实例化并显示,并在后续印刷机上移除并重新读取,无需实例化。

private void button1_Click(object sender, RoutedEventArgs e)
{

    if (pi == null) {
        pi = new PanoramaItem();
        pi.Header = "blah";
    }

    if (blahShown) {
        Pano.Items.Remove(pi);
        blahShown = false;
    } else {
        Pano.Items.Add(pi);
        blahShown = true;
    }


}