0

我有兴趣使用具有以下行为的 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 实现这种延迟加载?

4

1 回答 1

3

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

private void expander_Expanded(object sender, System.Windows.RoutedEventArgs e)
{
     // add item here
     ((ExpanderView) sender).UpdateLayout()
}
于 2012-11-16T18:07:38.967 回答