ПредишенСледващото

контрол TreeView често се използват за настаняване на големи обеми от данни. Причината за това е, че с дървовидна структура има коагулация-разгръщат структура. Дори ако TreeView превъртате нагоре и надолу от потребителя, видимото не е задължително цялата налична информация, която тя съдържа. Информацията не се вижда, като цяло може да бъде прехвърлено в контрола TreeView, намаляване на режийните (и времето, необходимо, за да го запълни времето). Дори по-добре е, че когато отворите Expanded TreeViewItem елемент задействал събитието. и когато затворите - Свито събитие. Това е много полезно, за да добавите липсващите компоненти или изтриване на тези, които вече не са необходими. Този подход се нарича оперативното (точно навреме) създаването на възли.

Въпреки контрол TreeView елемент и може да бъде попълнена на структура на твърдия диск директория, този процес е отчайващо бавен. Много по-добре, когато за първи показана частично валцувани представителство, и потребителят може да се достигне до своите собствени специфични директории. Когато се разширява всеки възел в дървото се добавят към съответните поддиректории, и процесът работи почти мигновено:

WPF, създаване на дървовидна структура възли

В устройството за управление на TreeView с възможност за бързо установяване на единици за показване на папки на нищо ново твърд диск. Първата стъпка е да добавите списък TreeView на дискове в първия екран за зареждане. Първоначално възел за всеки диск се появява сведени до минимум. Буквата на устройството се появява в заглавната част и DriveInfo обект се съхранява в TreeViewItem.Tag собственост, за да се опрости поддиректории от търсенето в бъдеще без пресъздаване на обекта. (Това увеличава режийните на приложенията, свързани с паметта, но в същото време намалява броя на проверките за сигурност за достъп до файловете. Общият ефект е незначителен, но малко по-подобрява производителността и опростява кода.) Това е кодът, по който с дървовидна структура е изпълнена с списъка на дискове с помощта на класа System.IO.DriveInfo:

Този код добавя по всяка кола възел контейнер (с низ звездичка). Този показалец не се показва, тъй като първия възел е сведена до минимум. Когато се разшири този възел указател, можете да премахнете и добавяне на негово място списък с подпапки.

За реализиране на оперативната създаване на възли трябва да бъдат обработени TreeViewItem.Expanded събитие. Поради това събитие поддържа разпределението на балон, манипулатор събитие може да бъде свързан директно към TreeView елемент да се анализира всеки случай Expanded намира вътре TreeViewItem елементи:

В момента следния код актуализира елементи за всяко разгръщане. можете да направите актуализацията трябва да се извършва само в първия елемент и разгъване откритие заместител, ако желаете. Това ще намали обема на работата, която ще трябва да стартирате приложението, но тя също така ще увеличи вероятността за показване на остаряла информация.

Освен това, можете да направите актуализацията се извършва за всеки елемент е избран, чрез преработка на събития ViewItem.Selected, или работа с компоненти като System.IO.FileSystemWatcher очакване на уведомлението от операционната система чрез добавяне, изтриване или преименуване на папки. FileSystemWatcher компонент е единственият начин да се гарантира, че актуализацията на дърво директория ще се извършва веднага с появата на промяна, но е изпълнен с най-големите разходи.

Чрез комбиниране на мощни функции с контролна TreeView шаблони. можете да постигнете много неща. Например, можете да създадете контроли, които са коренно различни по вид и поведение, като просто замяна на шаблоните за контрол TreeView и TreeViewItem.

Свързани статии

Подкрепете проекта - споделете линка, благодаря!