依存関係のプロパティについて簡単に説明します。MVVMモデルとバインドして、遅延読み込みしているツリービューがあります。バインドされたプロパティIsExpandedに、このコードがあります
public bool IsExpanded
{
get { return _isExpanded; }
set
{
if (value != _isExpanded)
{
_isExpanded = value;
OnPropertyChanged("IsExpanded");
}
// Expand all the way up to the root
if (_isExpanded && _parent != null)
if (!_parent.IsExpanded) _parent.IsExpanded = true;
// Lazy load the child items, if necessary
if (HasDummyChild)
{
LoadChildren();
}
}
}
これは、ノードの展開アイコンをクリックすると起動され、子が読み込まれ、完了すると、展開された子ノードが表示されます。
問題は、ロードに少し時間がかかる可能性があるため、ロード中に1人の子に「お待ちください、ロードしています...」などと言ってもらい、LoadChildren()メソッドが完了すると、実際の子を表示します。
デフォルトで子リストにダミーノードを追加します。このノードにはこの表示テキストがあり、LoadChildrenを呼び出してそのダミーリストを実際のリストに置き換えますが、問題は展開アイコンをクリックすると、セッターが最初に起動することです。子を表示するためにGETデータバインディングが呼び出される前に完全に完了します。
したがって、ダミーアイテムは表示されず、子リストに存在しますが、セッターが完了するまでに、ダミーアイテムは置き換えられ、表示されるのは、開く前に一時停止した完全なリストだけです。
アイコンをクリックすると、最初に既存のダミーの子を持つノードが視覚的に展開され、次に実際の子をフェッチしてロードしようとする方法はありますか?