ExpanderView,扩展事件上的延迟加载项

时间:2012-08-16 09:09:54

标签: windows-phone-7 silverlight-toolkit expander

我对使用具有以下行为的ExpanderView控件感兴趣:

  • 我知道在填充标题时是否应该有可扩展的项目,但我不知道有多少并且不想添加项目,直到标题被点击以扩展它(例如,因为项目需要是使用网络请求检索。
  • 我最终会将ExpanderControls作为列表中的项目,但我会先玩最简单的场景。

似乎这是一个常见的场景,懒得加载可扩展的项目。

所以我在Expanded事件中实现了简单的代码,以加载尚未加载的项目:

if (!expanded)
{
    for (var x = 1; x <= 10; x++)
    {
        ((ExpanderView)sender).Items.Add(new TextBlock() { Text = "Added this on expanded " + x.ToString() });
    }

    expanded = true;
}

这个问题是第一次没有正确呈现项目(控件下方的任何内容都没有被“按下”以允许项目的空间),可能是因为控件不能提前知道项目内容。在后续扩展时,项目会正确显示。

任何人都知道如何使用ExpanderView实现这种延迟加载?

1 个答案:

答案 0 :(得分:3)

添加项目后,尝试在expandderview上执行UpdateLayout()。如果您在Expanded监听器中进行扩展,则可以执行以下操作。

private void expander_Expanded(object sender, System.Windows.RoutedEventArgs e)
{
     // add item here
     ((ExpanderView) sender).UpdateLayout()
}