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

項目が追加された後、expanderview で UpdateLayout() を実行してみてください。Expanded リスナーで拡張を行っている場合は、次のようにするだけです。

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