【问题标题】:ExpanderView, lazy load items on Expanded eventExpanderView,在 Expanded 事件上延迟加载项目
【发布时间】:2012-11-17 02:07:38
【问题描述】:

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

【问题讨论】:

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


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-05-05
      • 2010-11-04
      • 2018-03-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多